題目:
Given a positive integer num, write a function which returns True if num is a perfect square else False.
Note: Do not use any built-in library function such as sqrt
.
Example 1:
Input: 16 Returns: True
Example 2:
Input: 14 Returns: False題目鏈接
題意:
給一個正整數,要求實現判斷它是否爲一個數的平方。不可以使用庫函數中的sqrt函數。
利用二分查找算法,每次查找中間值,判斷中間值的平方和num之間的關係,實現過程中注意int的越界問題,中間變量應當使用long long類型變量。
代碼如下;
class Solution {
public:
bool isPerfectSquare(int num) {
int l = 0, r = num;
while (l < r) {
long long mid = (l+r) >> 1;
long long temp = mid * mid;
if (temp > num) {
r = mid - 1;
}
else if (temp < num) {
l = mid + 1;
}
else {
return true;
}
}
return l*l == num;
}
};