367.有效的完全平方数
- 有效的完全平方数
难度简单119
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt。
示例 1:
输入:16 输出:True
示例 2:
输入:14 输出:False
二分
//直接二分秒就行 注意num要是一个很大的数 尽量使用Long
// time : O(logN) space : O(1)
public boolean isPerfectSquare(int num) {
if(num < 2){
return true;
}
long left = 2;
long right = num/2;
long x = 0;
long mid = 0;
while(left <= right){
mid = left+(right-left)/2;
x = mid * mid;
if(x == num){
return true;
}
if(x > num){
right = mid-1;
}else{
left = mid+1;
}
}
return false;
}