int sqrt(int x) {
if(x < 0) return-1;
if(x==0) return 0;
int low=1,high=x/2+1;
while(low<=high)
{
int mid=((high-low)>>1)+low;
if(x/mid>mid) low=mid+1;//表示mid有点小,需要大一点;不能用mid*mid来判断,会溢出
else if(x/mid<mid)high=mid-1;
else return mid;
}
return high;//其实这一步就说明没有找到精确到结果,所以返回较小的high值近似一下
}
sqrtx
最新推荐文章于 2022-03-29 22:49:17 发布