1. 思路
这个题就用二分查找的思想,比LeetCode69x的平方根要简单一些,那个还要处理开平方不是整数的情况,这个直接就按左闭右闭,middle的平方是num就返回true,否则继续迭代二分直到找到middle的平方是num的情况返回true,或者找不到跳出循环返回false.
2. 代码
class Solution {
public:
//左闭右闭
bool isPerfectSquare(int num) {
int left = 0;
int right = num;
while(left <= right)
{
int middle = left + ((right - left) >> 1);
if(num > long(middle) * long(middle))
{
left = middle + 1;
}
else if(num == long(middle) * long(middle))
{
return true;
}
else
{
right = middle - 1;
}
}
return false;
}
};
结果也是顺利通过