实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
根据题意,要求的是x的平方根向下取整的数,根据数学性质可以很容易想到二分法:将下边界初始化为1,上边界初始化为x,mid为二者加和-1除以2,让x➗mid得出sqrt,判断与mid的大小,若mid>sqrt则说明区间取大了,令上边界=mid-1,反之下边界等于mid+1,当mid=sqrt时返回mid。
int mySqrt(int a){
if(a==0){return a;)
int low = 1 , right = a, mid,sqrt;
while(l<=r){
mid = (l+r-1)/2;
sqrt = a/mid;
if(sqrt==mid) return mid;
else if(sqrt > mid){
l = mid+1;
}
else{r = mid - 1;}
}
return r;
}