【ATT】【second】Sqrt(x)
二分查找。要注意越界问题。以及除数是否为0的情况
int sqrt(int x) {
// Note: The Solution object is instantiated only once and is reused by each test case.
if(x<=1)
return x;
int left = 1,right = x;
while(left<=right)
{
int mid = left + (right-left)/2;
int tmp = x/mid; //用除法,因为mid*mid可能越界;用除法的话,考虑分母是否为0,因此x从2开始计算,那么mid不可能为0
if(tmp<mid)
right = mid-1;
else if(tmp>mid)
left = mid+1;
else
return mid;
}
return right; //返回的是right
}
浙公网安备 33010602011771号