LeetCode(69):二分法求平方根

题目描述

image-20201108093932914

实现思路(二分查找)

利用二分查找的思想,用 left、right和mid三个变量去逼近最终的结果

在每一轮循环中,令 mid = (left + right) / 2

若mid的平方大于目标,则缩小右边界 (right=mid)

若mid的平方小于目标,则增大左边界(left=mid)

直到 right-left 差值为1,说明找到结果

代码实现(Javascript)

/**
 * @param {number} x
 * @return {number}
 */
var mySqrt = function(x) {
    if(x===0 || x===1){
        return x
    }

    var left=0
    var right=x
    while(left<right){
        if(Math.abs(left-right) <= 1){
            return left
        }

        let mid=Math.floor((left+right) / 2)
        if(mid*mid === x){
            return mid
        }else if(mid*mid > x){
            right = mid
        }else {
            left = mid
        }
    }
};

原文地址:https://www.cnblogs.com/baebae996/p/13943464.html