题目描述
题目描述: 实现 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;
};
前期回顾
LeetCode 703 数据流中的第 K 大元素 | 刷题打卡
LeetCode 103 & 199 & 542 | 刷题打卡
LeetCode 235 二叉搜索树的最近公共祖先 | 刷题打卡
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情