题目:
Implement int sqrt(int x)
.
Compute and return the square root of x, where x is guaranteed to be a non-negative integer.
Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.
Example 1:
Input: 4 Output: 2
Example 2:
Input: 8 Output: 2 Explanation: The square root of 8 is 2.82842..., and since the decimal part is truncated, 2 is returned.
代码:
class Solution {
public:
int mySqrt(int x) {
if (x < 2)
return x;
int low = 1, high = x / 2, mid = 1;
long long pre = 0, res;
while (low <= high)
{
mid = (low + high) / 2;
res = mid;
res *= res;
if (res == pre || res == x)
break;
if (res < x)
low = mid+1;
else
high = mid-1;
pre = res;
}
if (pre > x && res != x)
return mid - 1;
return mid;
}
};