题目
我的题解
class Solution {
public boolean isPerfectSquare(int num) {
if (num == 1) return true;
int left = 1;
int right = num - 1;
int mid;
while (left <= right) {
mid = left + (right - left) / 2;
if (mid == num / mid && num % mid == 0) {
return true;
} else if (mid > num / mid) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return false;
}
}
其他题解
参考69. x 的平方根(Easy)中的牛顿迭代法。
总结
- 注意除法会省略int型小数点后的值,如果忽略加上整除这个条件会报错,如5/2=2(.5)的0.5会被忽略,导致5被认定为true
- 总是不能第一时间想出没有漏洞的解法,要靠LeetCode的测试数据来修正想法,过于想当然
- 需要对各种类型的数值特点敏感一点