题目说明
1 | 实现 int sqrt(int x) 函数。 |
解题思路一
- 求平方根,一种是利用我们Math.sqrt()直接求,这种就不说了。
- 然后说我们手动求的方式,最简单的方式,就是for循环遍历从1到x,求出x/i === i 那么这个i就是他的平方根。
- 问题是你遇到非整平方根你可就求不出来了。
- 所以再进行一次判断
(i * i > x && (i-1)*(i-1) < x)判断x是否存在于这个范围内,如果再,取i-1,因为我们是向下取整的。代码实现一
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19/**
* @param {number} x
* @return {number}
*/
var mySqrt = function(x) {
let length = (String(x).length >> 1) + 1;
let max = ((new Array(length).fill((String(x)[0] - 0 >> 1) + 2).fill(0,1)).join('')) - 0;
for(let i = max; i >= 0; i--) {
if(i * i === x) {
return i
}
if((i * i > x && (i-1)*(i-1) < x)) {
return i - 1
}
}
return 0
};