题目描述:

Implement int sqrt(int x).

Compute and return the square root of x.

实现整数的开平方运算, 使用二分搜索, 也就是方程求根的二分法来计算. 因为计算结果为整数, 所以最后如果没有平方根的准确值, 要把最后的结果减1.

class Solution {
public:
    int mySqrt(int x) {
        if(x == 1) return 1;
        long long left = 1, right = x, mid = (left + right) / 2;
        while(left < right){
            long long m = mid * mid;
            if(m > x) 
                right = mid;
            else if(m < x)
                left = mid + 1;
            else 
                return mid;
            mid = (left + right) / 2;
        }
        return left - 1;
    }
};