Implement int sqrt(int x).
Compute and return the square root of x.
一道设计题,实现sqrt方法,也就是开平方根。我们可以用二分法来做,设定left 为1, right为x, 用x / mid 和mid来进行比较(之所以用x / mid与mid比较,而不用x与mid*mid比较是因为mid*mid可能溢出,用x / mid可以防止溢出),如果x /mid 等于mid,就返回mid; 如果x /mid 小于mid,就让right = mid - 1; 如果x /mid 大于mid,就让left = mid + 1;直到left > right程序终止,这是left - 1恰好是我们要找的答案,返回就可以了。代码如下:
Compute and return the square root of x.
一道设计题,实现sqrt方法,也就是开平方根。我们可以用二分法来做,设定left 为1, right为x, 用x / mid 和mid来进行比较(之所以用x / mid与mid比较,而不用x与mid*mid比较是因为mid*mid可能溢出,用x / mid可以防止溢出),如果x /mid 等于mid,就返回mid; 如果x /mid 小于mid,就让right = mid - 1; 如果x /mid 大于mid,就让left = mid + 1;直到left > right程序终止,这是left - 1恰好是我们要找的答案,返回就可以了。代码如下:
public class Solution {
public int mySqrt(int x) {
if(x <= 1) return x;
int l = 1;
int r = x;
while(l <= r) {
int mid = l + (r - l) / 2;
if(x / mid == mid) return mid;
if(x / mid > mid) {
l = mid + 1;
} else {
r = mid - 1;
}
}
return l - 1;
}
}
2881

被折叠的 条评论
为什么被折叠?



