1、题目描述
2、解题思路
当 num == 1 时,它是完全平方数;
当 num > 2 时,如果 num 是完全平方数,那么这个完全平方数在 [2, num/2] 之间;
可以采用二分查找的方式,从 [2, num/2] 中间找一个数查看是否 num 的完全平方数;
当结束 while 循环时,已经一个数字都没了,直接返回 false 。
3、解题代码
class Solution {
public boolean isPerfectSquare(int num) {
if (num < 2) {
return true;
}
long left = 2;
long right = num / 2;
long x, guessSquared;
while (left <= right) {
x = left + (right - left) / 2;
guessSquared = x * x;
if (guessSquared == num) {
return true;
}
if (guessSquared > num) {
right = x - 1;
} else {
left = x + 1;
}
}
return false;
}
}