题目🌵
📝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
- 取1-x 的中间值mid,假如 mid² ≤ x,即mid有可能是x的算术平方根
- 如果循环结束,还是没有找到,说明输入的值为0
- return 0
- 已知:x的算术平方根 小于或等于x
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;
};