给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
注意:不要使用任何内置的库函数,如 sqrt。
示例 1:
输入: 16 输出: True
示例 2:
输入: 14 输出: False
该题实现起来很简单,数学上有个公式
1+3+5+......+(2n-1)=n*n
所以直接粗暴的解法就是循环减去每个奇数:
/**
* @param {number} num
* @return {boolean}
*/
var isPerfectSquare = function(num) {
for(let i = 1; num>0; i+=2){
num-=i;
}
return num === 0;
};
另外还可以用二分的思维
/**
* @param {number} num
* @return {boolean}
*/
var isPerfectSquare = function(num) {
var left = 0,
right = num;
while(left<=right){
var mid = left+Math.floor((right-left)/2);
var temp = mid*mid;
if(temp===num){
return true;
}else if(t<num){
left = mid+1;
}else{
right = mid-1;
}
}
return false;
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。