这道题的意思是,给出一个正整数,判断他是不是一个完全平方数,要求不能用sqrt等库函数。
二分搜索的思想,先检查0~num中间的数mid的平方,如果他等于num,则是完全平方数,如果他大于num,则从left到mid中间继续找,如果他小于num, 则从mid到right中间继续找。
class Solution {
public:
bool isPerfectSquare(int num) {
long left = 0, right = num;
while (left <= right) {
long mid = left + (right - left) / 2, t = mid * mid;
if (t == num) return true;
else if (t < num) left = mid + 1;
else right = mid - 1;
}
return false;
}
};