# 有效的完全平方数
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt。
示例 1:
输入:16
输出:True
示例 2:
输入:14
输出:False
# 解法1:
var isPerfectSquare = function(num) {
if(num===1){
return true
}
// 最小的完全平方数为4=>2*2 ,而9=>3*3,底数小于其一半
for(let i=1;i<num/2+1;i++){
if(i*i===num){
return true
}
}
return false
};
# 解法2:
// 二分法
var isPerfectSquare = function (num) {
if (num === 1) {
return true
}
let left = 1
let right = num / 2 + 1
while (left < right) {
let middle = Math.round((left + right) / 2)
if (middle === right) {
return false
}
if (middle * middle < num) {
left = middle
} else if (middle * middle > num) {
right = middle
} else {
return true
}
}
};