题目:
Implement int sqrt(int x)
.
Compute and return the square root of x.
题解:
一开始用的是牛顿迭代法,但时间会超时,很郁闷,看到网上有题解,因为输入时int,输出也是int,用二分法就可以解决了,很不错。
代码如下:
class Solution {
public:
int sqrt(int x) {
long left = 0;
long right = x;
while (left<right)
{
long mid = left + (right-left)/2;
if (mid*mid<=x && (mid+1)*(mid+1)>x)
{
return mid;
}
else if(mid*mid<x)
{
left = mid+1;
}
else
{
right = mid-1;
}
}
}
};