二分查找法:x 的平方根

二次信任 提交于 2019-11-28 05:41:43

实现 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;
    }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!