Implement int sqrt(int x)
.
Compute and return the square root of x.
二分时,while (l <= r)且返回小的值(r)。
int做乘法时会溢出,虽然答案还是int。
class Solution {
public:
int sqrt(int x) {
int l = 0, r = x;
long long mid;
long long cmp;
while (l <= r) {
mid = (l + r) >> 1;
cmp = mid * mid - x;
if (!cmp)
return mid;
else if (cmp < 0)
l = mid + 1;
else
r = mid - 1;
}
return r;//return the smaller one
}
};