思路
如果num是完全平方数,那么在二分查找的过程while()中必然能找到一个整数mid,使得mid^2 = num。
关联第69题。
class Solution {
public boolean isPerfectSquare(int num) {
int low = 1;
int high = num;
while (low <= high) {
int mid = low + (high - low) / 2;
if ((long) num == (long) mid * mid) { // long
return true;//在二分查找的过程中找到了一个整数mid,使得mid^2 = num
} else if ((long) num > (long) mid * mid) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return false;//在二分查找的过程中未找到一个整数mid,使得mid^2 = num
}
}