文章目录
1、题目描述2、解题思路3、解题代码
1、题目描述
2、解题思路
x 的平方根肯定在 [1, x] 区间内,题意只要求平方根的整数部分,因此可以采用二分查找的方式来求解。
需要注意的一点就是更新 mid 的值时,建议采用 l + (r - l) / 2,而不是 (l + r) / 2,因为后者可能溢出。
3、解题代码
class Solution {
public int mySqrt(int x
) {
int l
= 0, r
= x
, ans
= -1;
while (l
<= r
) {
int mid
= l
+ (r
- l
) / 2;
if ((long) mid
* mid
<= x
) {
ans
= mid
;
l
= mid
+ 1;
} else {
r
= mid
- 1;
}
}
return ans
;
}
}