力扣69. x 的平方根(java二分法)

力扣69. x 的平方根(java二分法)

力扣69. x 的平方根(java二分法)_第1张图片
思路: 只要是 >=4 的数,平方根肯定小于等于它的一半,根据这个思路,我们可以选择二分法

public int mySqrt(int x) {
        //排除影响条件
        if(x == 0){
            return 0;
        }
        if(x < 4){
            return 1;
        }
        //二分法求解
        int left = 1,right = x/2;
        //需要注意的是这里要用long  否则乘法会溢出 导致得到负值  影响循环
        long medium = 0;
        while(left <= right){
            medium = (left+right)/2;
            if(medium*medium > x){
                right = (int)medium-1;
            }else if(medium*medium < x){
                left = (int)medium+1;
            }else{
                return (int)medium;
            }
        }
        return right;
    }

你可能感兴趣的:(力扣)