题意:给出一正整数,不用 sqrt函数,判断该数是否是平方数
思路:
第一种,连续奇数和为平方数
代码如下:
public class Solution {
public boolean isPerfectSquare(int num) {
for (int i = 1; num > 0; i += 2)
{
num -= i;
}
return num == 0;
}
}
第二种,用二分查找法
代码如下:
public class Solution {
public boolean isPerfectSquare(int num) {
int low = 0, high = 46340;
while (low < high)
{
int mid = (low + high) >> 1;
if (mid * mid == num) return true;
else if (mid * mid < num) low = mid + 1;
else high = mid - 1;
}
return low * low == num;
}
}