LeetCode 69. Sqrt(x)

LeetCode 69. Sqrt(x)_第1张图片
如果这题用int型来做,会出现溢出的报错提醒,不然就会运行超时,所以我直接选择用long类型来做。还是用二分法来完成。

int mySqrt(int x){
    if(x==0)
        return 0;
    if(x==1)
        return 1;
    long left = 0,right = x;
    while(left<=right){
        long mid = left+(right-left)/2;
        long sqrt=x/mid;
        if(sqrt==mid){
            return mid;
        }else if(sqrt<mid){
            right = mid - 1;
        }else{
            left = mid +1;
        }
    }
    return left*left ==x ? left : left -1;
}

你可能感兴趣的:(LeetCode,c语言,算法,二分查找)