367. 有效的完全平方数
367. 有效的完全平方数
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
示例 1:
输入:num = 16
输出:true
提示:
- 1 <= num <= 2^31 - 1
二分查找
- 根据提示,可以看到数字范围特别大,因此线性遍历可能会超时,
- 二分法主要是左右边界如何收缩,对于本题目,因为左右节点都要收缩。
- 这是因为:
mid*mid == num,等号情形直接退出,因此可知数字mid不可能是答案,删去。
class Solution {
public:
bool isPerfectSquare(int num) {
// 二分法
long long l = 1, r = num;
while(l <= r){
long long mid = (l+r)/2;
long long cur = mid*mid;
if(cur == num)
return true;
else if(cur > num)
r = mid - 1;
else
l = mid + 1;
}
return false;
}
};

浙公网安备 33010602011771号