public boolean isPerfectSquare(int num) {
if (num == 1){
return true;
}
if (num == 0){
return true;
}
int left = 1;
int right = num;
int mid = 0;
while (left < right){
mid = left + (right-left) / 2 + 1;
//1、不用mid * mid = num是因为如果mid值很大,会溢出
//2、保证必须是整除,比如2 = 5 / 2,但明显5不是完全平方数
if (num % mid == 0 && mid == num / mid){
return true;
//有了上面的if(),这里的mid == num / mid就是非整除的,所以也就不可能是完全平方数了,直接返回false
}else if (mid == num / mid){
return false;
}else if (mid > num / mid){
right = mid - 1;
}else {
left = mid;
}
}
return false;
}
367.有效的完全平方数
最新推荐文章于 2024-08-25 18:17:58 发布