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;
}