【LeetCode069】Sqrt(x)

class Solution {
public:
    int mySqrt(int x) {
        if(x == 0)
            return 0;
        if(x == 1)
            return 1;
        int left = 0;
        int right = x;
        while(left <= right){
            int mid = (left + right)/2;
            if(mid <= x/mid){  //平方小于等于x的最后一个整数
                if(mid == x || (mid+1) > x/(mid+1))  //对于大数,这里使用了同时除以mid,但要保证 mid != 0
                    return mid;
                else{
                    left = mid+1;
                }
            }
            else{
                right = mid-1;
            }
                
        }
        return -1;  //上面的循环必然可以return结果,GitHub编译器要求必须按照函数的声明显式返回int值
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_39458342/article/details/87915086