给定一个正整数 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 };