📝Leetcode 69 x 的平方根

108 阅读1分钟

题目🌵

📝Leetcode 69 x 的平方根

✏️leetcode-cn.com/problems/sq…


给你一个非负整数 x ,计算并返回 x 的 算术平方根 。

由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

示例 1:

输入:x = 4
输出:2

解题思路💡

  • 二分法
    • 已知:x的算术平方根 小于或等于x
      • 取1-x 的中间值mid,假如 mid² ≤ x,即mid有可能是x的算术平方根
        • 此时再判断 (mid+1)²,如果大于x,则说明Mid 为x的算术平方根
        • 如果小于 x,则从左趋近于右边界,将left=mid+1
      • 如果mid² > x ,则从右侧趋近,将right= mid-1
      • 直到满足情况 return
    • 如果循环结束,还是没有找到,说明输入的值为0
      • return 0
var mySqrt = function (x) {
    let left = 1, right = x;
    while (left <= right) {
        let mid = left + ((right - left) >> 1)
        if (mid * mid <= x) {
            if ((mid + 1) * (mid + 1) > x) {
                return mid;
            }
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return 0;
};

image-20220301144913948