二分查找法:x 的平方根

实现 int sqrt(int x) 函数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

    public int mySqrt(int x) {
        long left=0;
        long rigth=Integer.MAX_VALUE;
        
        while(left<rigth){
            // 这种取中位数的方法又快又好,是我刚学会的,原因在下面这篇文章的评论区
            // https://www.liwei.party/2019/06/17/leetcode-solution-new/search-insert-position/
            // 注意:这里得用无符号右移动
            long mid=(left+rigth+1)>>>1;
            long s=mid*mid;
            if(s>x){
                rigth=mid-1;
            }else{
                left=mid;
            }
            
        }
        return (int)left;
    }

猜你喜欢

转载自www.cnblogs.com/hanxiaomin/p/11394811.html