这道题只是要求int型的x的int的开根号数,只要不断用二分就可以,不过要注意边界条件,比如最后当high-low==1的时候,用不用返回以及要怎么返回。代码如下:
class Solution {
public:
int mySqrt(int x) {
if(x <= 0) return 0;
int low = 1; int high = x; int mid;
while(high - low > 1)
{
mid = low + (high - low) / 2;
if(mid == x/mid)
return mid;
else if(mid > x/mid)
high = mid;
else
low = mid;
}
if(high > x/high)
return low;
else
return high;
}
};