您的位置 首页 JAVA(2017)

69. Sqrt(x)

Implement int sqrt(int x).

Compute and return the square root of x.

思路:

这道题不难,用binary search 1-x就行,有几个需要注意的细节

  1. 求中间值用start+ (end-start)/2,别用(start+end) /2,原因避免start+end求和超出范围
  2. mid*mid == x也别用,用 mid = x/mid,理由和上面一致。
public class Solution {
    public int mySqrt(int x) {
        int start=1;
        int end = x;
        if(x<2) return x;
        while(start<end){
            int mid = start+ (end-start)/2;
            if(mid <= x / mid && (mid + 1) > x / (mid + 1)){
                return mid;
            }
            if(mid > x / mid){
                end =mid;
            }
            else{
                start =mid+1;
            }
        }
        return -1;
    }
}
看完了?留个评分呗?
[0人评了分,平均: 0/5]

本站原创文章皆遵循“署名-非商业性使用-相同方式共享 3.0 (CC BY-NC-SA 3.0)”。转载请保留以下标注:

原文来源:《69. Sqrt(x)》

发表评论

邮箱地址不会被公开。

返回顶部