leetcode每日一题-367:有效的完全平方数
链接
有效的完全平方数
题目
分析
这个其实是很简单的浮点数二分问题,我们只需要用浮点数二分来求出sqrt(num)然后再进行判断即可
代码
C++
class Solution {
public:
bool isPerfectSquare(int num) {
double l = 0, r = num;
while(fabs(r - l) > 1e-6)
{
double mid = (l + r) / 2;
if(mid * mid >= num) r = mid;
else l = mid;
}
int x = (int)r;
return x * x == num;
}
};
java
官方题解采用的是整数二分
class Solution {
public boolean isPerfectSquare(int num) {
int left = 0, right = num;
while (left <= right) {
int mid = (right - left) / 2 + left;
long square = (long) mid * mid;
if (square < num) {
left = mid + 1;
} else if (square > num) {
right = mid - 1;
} else {
return true;
}
}
return false;
}
}
作者:LeetCode-Solution