69.x的平方根
思路:
本题采用二分法,根据题目所给x的范围,分别设置 left 和 right,然后根据 mid * mid 与 x 的关系求出平方根即可
注意:
mid * mid的值可能会超过int的范围,所以 mid需要提前转换成 long类型,这样乘出来也是long类型就不会超出范围
代码实现
class Solution {
public int mySqrt(int x) {
int left = 0;
int right = x;
int ans = -1;
while (left <= right) {
int mid = ((right - left) >> 1) + left;
if ((long)mid * mid > x) {
right = mid - 1;
} else {
ans = mid;
left = mid + 1;
}
}
return ans;
}
}