Sqrt(x)
Implement int sqrt(int x)
.
https://discuss.leetcode.com/topic/8680/a-binary-search-solution/18
x的根的取值范围在[1,x/2]之间,设置left=1,right=x/2;二分搜索。
class Solution {
public:
int mySqrt(int x) {
if(x==0)
return 0;
int left=1,right=x/2;
while(left
x / mid)//if(mid*mid>x)会错,溢出会有问题
right=mid-1;
else {
if((mid+1)>x/(mid+1))//这一步是不可少的,因为当mid^2
<(mid+1)^2,此时,有x=mid;
return mid;
left=mid+1;
}
}
return left;
}
};