美文网首页
69. x 的平方根

69. x 的平方根

作者: 一只小星_ | 来源:发表于2019-07-29 23:51 被阅读0次

实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

输入: 4
输出: 2

输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。

这个就用的二分法的模版
但是要注意用左中位数,还是右中位数,
在这个if判断里面,由于是 right = mid-1,所以是右边收敛,选择右中位数。
public int mySqrt(int x) {
        long left = 0;
        long right = x/2+1; //为了包括1的情况
        
        while (left<right){
            long mid = (left+right+1)>>>1;
            long num = mid*mid;
            if (num > x){
                right = mid-1;
            }else {
                left = mid;
            }
        }
        return (int)left;
    }

相关文章

网友评论

      本文标题:69. x 的平方根

      本文链接:https://www.haomeiwen.com/subject/ccywrctx.html