力扣-数组-367 有效的完全平方数
思路和时间复杂度
- 思路:利用二分,确定区间是左闭右闭,然后根据大小进行二分
- 时间复杂度:
代码
class Solution {
public:
bool isPerfectSquare(int num) {
bool flag = false;
if(num == 0 || num == 1) return true;
long long left = 0, right = num;
// 左闭右闭
while(left <= right){
long long mid = left + (right - left) / 2;
if(mid * mid == num){
return true;
}else if(mid * mid > num){
right = mid-1;
}else{
left = mid+1;
}
}
return flag;
}
};