# 有效的完全平方数

给定一个正整数 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
        }
    }
};
Last Updated: 4/3/2020, 6:21:54 PM