利用二分法,x的平方根一定在1~x/2之间,因为是int类型的平方根,所以sqrt(x)*sqrt(x) <= x
当终止条件start和end转换成int类型相等的时候,那么sqrt(x)就是start的值了
class Solution {
public:int mySqrt(int x) {
if(x==0) return 0;
if(x==1) return 1;
double mid = 1;
double start = 0;
double end = x/2;
double res = 1;
while((int)start<(int)end){
mid = (start+end)/2;
res = mid*mid;
if(res == x )
return (int)mid;
if(res > x)
end = mid;
else
start = mid;
}
return start;
}
};