Valid Perfect Square
给一个n, 返回true 如果n是完美的平方数. 这个题注意的是n也许是Integer.MAX_VALUE, 所以要防止溢出, 用二叉搜索做.
class Solution {
public boolean isPerfectSquare(int n) {
if(n <= 0)
return false;
if(n == 1)
return true;
int l = 1;
int r = n;
while(l <= r) {
int m = l + (r - l) / 2;
if(m == n / m) // m*m is overflow
return n % m == 0;
else if(m < n / m)
l = m + 1;
else
r = m - 1;
}
return false;
}
}