0069. x 的平方根【简单】
1. 📝 题目描述
- 给你一个非负整数
x,计算并返回x的 算术平方根。 - 由于返回类型是整数,结果只保留 整数部分,小数部分将被 舍去。
- 注意:不允许使用任何内置指数函数和算符,例如
pow(x, 0.5)或者x 0.5。
示例 1:
txt
输入:x = 4
输出:21
2
2
示例 2:
txt
输入:x = 8
输出:21
2
2
解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
提示:
0 <= x <= 2^31 - 1
2. 🎯 s.1 - 二分查找法
js
/**
* 二分查找法
* @param {number} x
* @return {number}
*/
var mySqrt = function (x) {
if (x === 0) return 0
let left = 1
let right = x
let result = 0
while (left <= right) {
let mid = Math.floor((left + right) / 2)
if (mid <= x / mid) {
result = mid
left = mid + 1
} else {
right = mid - 1
}
}
return result
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
3. 🎯 s.2 - 牛顿法
js
/**
* 牛顿法
* @param {number} x
* @return {number}
*/
var mySqrt = function (x) {
if (x === 0) return 0
let r = x
while (r > x / r) {
r = Math.floor((r + x / r) / 2)
}
return r
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15