69. Sqrt(x)
Easy
6501196FavoriteShare
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.
用二分法来做,要注意1,0等特殊情况。二分法的边界很特别,要好好理解一下。另外if那里不能写成(M*M<=x)这样会报错超过范围。
class Solution {
public:
int mySqrt(int x) {
if(x<=0)return 0;
if(x==1)return 1;
int L=0;
int R=x;
while(L<R)
{
int M=L+(R-L)/2;
if(M<=x/M)L=M+1;
else R=M;
}
return R-1;
}
};