x的平方根

来源:互联网 发布:赫鲁晓夫知乎 编辑:程序博客网 时间:2024/04/27 15:00

实现 int sqrt(int x) 函数,计算并返回 x 的平方根。
转换一下思路,还是二分查找问题:
寻找ans * ans <= x的最后一个int型ans.
此处需要注意一点就是 mid * mid 可能会溢出,这里采取的是将mid除到等号的右边。当然是用long型也可以,最后再强转一下。

 public int sqrt(int x) {        if (x <= 0) {            return 0;        }        int start = 1;        int end = x;        while (start + 1 < end) {            int mid = start + (end - start) / 2;            if (mid == x / mid) {                start = mid;            } else if (mid  < x / mid) {                start = mid;            } else {                end = mid;            }        }        if (end <= x / end) {            return end;        } else {            return start;        }    }
0 0
原创粉丝点击