实现 int sqrt(int x)
函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。
代码①:二分法,最大int型整数开根号为46340.9,故n从0~46340之间找,根据n的平方 小于等于 x,n+1的平方 大于 x
//二分法,最大int型整数开根号为46340.9,故n从0~46340之间找
//根据n的平方 小于等于 x,n+1的平方 大于 x 。用除法代替平方可以避免溢出
int mySqrt(int x) {
int low=1, high=x;
if( x>46340 )
high = 46340;
int mid = (low+high)/2;
while( low<=high )
{
if( x/mid>=mid && x/(mid+1)<(mid+1) ) //区间[mid,mid+1)=mid
return mid;
else if( x/mid>mid ) //mid的平分小于x
low = mi