LeetCode 367. 有效的完全平方數
- 2019 年 10 月 4 日
- 筆記
給定一個正整數 num,編寫一個函數,如果 num 是一個完全平方數,則返回 True,否則返回 False。
注意:不要使用任何內置的庫函數,如 sqrt。
示例 1:
輸入: 16 輸出: True
示例 2:
輸入: 14 輸出: False
該題實現起來很簡單,數學上有個公式
1+3+5+……+(2n-1)=n*n
所以直接粗暴的解法就是循環減去每個奇數:
1 var isPerfectSquare = function(num) { 2 for(let i = 1; num>0; i+=2){ 3 num-=i; 4 } 5 return num === 0; 6 };
另外還可以用二分的思維
1 var isPerfectSquare = function(num) { 2 var low=0; 3 var high=num; 4 while(low<=high){ 5 var mid=Math.floor((low+high)/2); 6 var now=mid*mid; 7 if(now==num){ 8 return true 9 } 10 else if(now<num){ 11 low=mid+1; 12 } 13 else{ 14 high=mid-1 15 } 16 } 17 return false 18 };