力扣69. x 的平方根

147 阅读1分钟

69. x 的平方根

image.png

思路

采用二分算法进行1到x的查找,思路为:因为舍弃小数,所以middle的平方一定小于x,而middle+1一定大于x

class Solution {
public:
    int mySqrt(int x) {
        int left = 1;
        int right = x;
        while(left <= right)
        {
            long middle = left + ((right - left - 1)/2);//设置middle为长整形,否则会溢出
            if(middle * middle > x )
            {
                right = middle - 1;
            }
            else if(middle * middle < x)//思路为:因为舍弃小数,所以middle的平方一定小于x,而middle+1一定大于x
            {
                if((middle + 1) * (middle + 1) > x)
                {
                    return middle;
                }
                else
                {
                    left = middle + 1;
                }
            }
            else
            {
                return middle;
            }
        }  
        return 0;      
    }
};

image.png