class Solution {
public:
int mySqrt(int x) {
if(x <= 0)
return 0;
int left = 0, right = min(x, 500000);
int mid = (left + right)/2;
int t = mid * mid;
int t2 = (mid+1)*(mid +1);
while(left <= right)
{
if(x >= t && x < t2)
break;
if( t < 0 || t > x)//尤其注意t<0的情况,因为结果会溢出。
right = mid-1;
else
left = mid + 1;
mid = (left + right)/2;
t = mid * mid;
t2 = (mid +1) *(mid+1);
}
return mid;
}
};
LeetCode || Sqrt(x)
最新推荐文章于 2022-01-10 17:10:52 发布