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
結果

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/348296.html
標籤:其他
