367.快速的完全立方数(javascript)367.ValidPerfectSquare

原创
小哥 3年前 (2022-11-10) 阅读数 5 #大杂烩

给定一个 正整数 num ,编写函数if。 num 是一个完整的平方数,返回 true ,否则返回。 false 。

高级:不要 使用任何内置库函数,例如。 sqrt 。

Given a positive integer num, write a function which returns True if num is a perfect square else False.

Follow up: Do not use any built-in library function such as sqrt.

示例 1:

输入:num = 16
输出:true

示例 2:

输入:num = 14
输出:false

要解决此问题,请单击此处。

二分查找

思想和算法

考虑使用二分法查找来优化方法2中的搜索过程 num 是正整数,因此如果是正整数 x 满足 x*x=num,则 x 一定满足 11≤x≤num。所以我们可以 1 和 num 作为二进制查找搜索间隔的初始边界。

细节

因为我们正在移动左边界 left 右侧边界right 新的搜索间隔将不包含正在检查的下标。mid,所以搜索带之间的边界总是我们没有检查过的。因此,当left=right 当我们还需要检查时 mid=(left+right)/2。

var isPerfectSquare = function (num) {
    let left = 1,right = num
    while (left <= right) {
        let mid = Math.floor((left + right) / 2)
        let midSum = mid * mid
        if (midSum > num) {
            right = mid - 1
        } else if (midSum < num) {
            left = mid + 1
        } else if (midSum == num) {
            return true
        }
    }
    return false
};

leetcode: https://leetcode-cn.com/problems/valid-perfect-square/

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除