Sqrt(x)

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恰好是我们要找的答案,返回就可以了。代码如下:
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;
    }
}

猜你喜欢

转载自kickcode.iteye.com/blog/2275202