LeetCode 69 x 的平方根 | 刷题打卡

273 阅读1分钟

题目描述

本题选自LeetCode 69. x 的平方根

题目描述: 实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例 1:

输入: 4
输出: 2

示例 2:

输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 
     由于返回类型是整数,小数部分将被舍去。

解题思路

经典的二分查找例题,我们通过尽可能地两边逼近,最终找到平方根。

题解

/**
 * @param {number} x
 * @return {number}
 */
var mySqrt = function (x) {
    if (x === 0 || x === 1) return x;
    let l = 1, r = x, ans;
    while (l <= r) {
        let mid = Math.floor((l + r) / 2);
        let res = mid * mid;
        if (res === x) {
            return mid;
        } else if (res > x) {
            r = mid - 1;
        } else {
            l = mid + 1;
            ans = mid;
        }
    }
    return ans;
};

前期回顾

Leetcode303 区域和检索 | 刷题打卡

LeetCode 组合总和三连 | 刷题打卡

LeetCode 703 数据流中的第 K 大元素 | 刷题打卡

LeetCode 239 滑动窗口最大值 | 刷题打卡

LeetCode 242 有效的字母异位词 | 刷题打卡

LeetCode 15 三数之和 | 刷题打卡

LeetCode 98 验证二叉搜索树 | 刷题打卡

LeetCode 50. Pow(x, n) | 刷题打卡

LeetCode 103 & 199 & 542 | 刷题打卡

二叉树遍历问题 | 刷题打卡

LeetCode 235 二叉搜索树的最近公共祖先 | 刷题打卡

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情