#力扣 LeetCode367. 有效的完全平方數 #在所有 Java 提交中擊敗了 100.00% 的使用者 @FDDLC
阿新 • • 發佈:2020-12-10
技術標籤:演算法&資料結構
題目描述:
367. 有效的完全平方數 - 力扣(LeetCode) (leetcode-cn.com)
Java程式碼一:
class Solution { //給定一個正整數 num public boolean isPerfectSquare(int num) { for(long root=1;;root++){ if(root*root==num)return true; else if(root*root>num)break; } return false; } }
Java程式碼二:二分法
class Solution { //給定一個正整數 num public boolean isPerfectSquare(int num) { long low=1,high=num,mid,mid2; while(low<=high){ //要取等號 mid=(low+high)/2; mid2=mid*mid; if(mid2>num)high=mid-1; else if(mid2<num)low=mid+1; else return true; //mid2==num } return false; } }
Java程式碼三:1+3+5+…+(2n-1)=n^2
class Solution { //給定一個正整數 num
public boolean isPerfectSquare(int num) { 1+3+5+…+(2n-1)=n^2
long n=1,sum=1;
for(;sum<num;n++,sum+=2*n-1);
return num==n*n;
}
}
Java程式碼四:同上
class Solution { //給定一個正整數 num public boolean isPerfectSquare(int num) { 1+3+5+…+(2n-1)=n^2 long an=1,sum=1; for(;sum<num;an+=2,sum+=an); return num==(an=(an+1)/2)*an; } }
Java程式碼五:同上
class Solution { //給定一個正整數 num
public boolean isPerfectSquare(int num) { 1+3+5+…+(2n-1)=n^2
for(int an=1;num>0;num-=an,an+=2);
return num==0;
}
}