# [367. Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square/description/) # 思路 题目要求判断一个数是否是一个某个数的平方。要求不能调用库里的sqrt函数。 可以考虑二分搜索1到num/2范围的数mid, 判断mid的平方是否等于num。 注意:如果直接计算`if(mid * mid == num)` 会存在溢出的情况,所以应该`if(num % mid == 0 && num / mid == mid)`。 # C++ ```C++ class Solution { public: bool isPerfectSquare(int num) { if(num == 1) return true; int low = 1, high = num / 2, mid; while(low <= high){ mid = (low + high) / 2; if(num % mid == 0 && num / mid == mid) return true; if(mid <= num / mid) low = mid + 1; else high = mid - 1; } return false; } }; ```