实现 int sqrt(int x)
函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
思路:二分法
有两种计算中值 m 的方式:
m = (l + h) / 2
m = l + (h - l) / 2
l + h 可能出现加法溢出,最好使用第二种方式。
class Solution {
public int mySqrt(int x) {
if(x==0 || x==1)
return x;
int l=0;
int r=x;
while(l<=r)
{
int mid=(l+r)/2;
if(mid==x/mid)
return mid;
if(x/mid>mid)
l=mid+1;
else
r=mid-1;
}
return r;
}
}