求star

开源不易,喜欢请点个star吧

Ocean Han
224 字
1 分钟
Leetcode->有效的完全平方数
2022-07-30

题目#

给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false

进阶:不要 使用任何内置的库函数,如 sqrt

示例 1:

输入:num = 16
输出:true

示例 2:

输入:num = 14
输出:false

提示:

  • 1 <= num <= 2^31 - 1

解题:key:#

①暴力循环#

/**
 * @param {number} num
 * @return {boolean}
 */
var isPerfectSquare = function(num) {
    let square = 1,x = 1
    while(square <= num){
        if(square == num){
            return true
        }
        ++x
        square = x * x
    }
    return false
};

②二分查找#

TIP

​ 这里有一点需要注意,当left == right的时候,还要做一次判断的

/**
 * @param {number} num
 * @return {boolean}
 */
var isPerfectSquare = function(num) {
    let left = 0,right = num
    while(left <= right) {
        let mid = Math.floor((right - left) / 2 + left)
        let square = mid * mid
        if(square < num){
            left = mid + 1
        }else if (square > num){
            right = mid - 1
        }else{
            return true
        }
    }   
    return false
};
Leetcode->有效的完全平方数
https://blog.oceanh.top/posts/algorithm/有效的完全平方数/
作者
Ocean Han
发布于
2022-07-30
许可协议
CC BY-NC-SA 4.0
最后修改时间
2024-08-10 10:08:49