二分法,找到mid*mid之后等于target或者最接近的。
如果 right = x / 2,就需要额外加一条x = 1的特殊情况判断。
int mySqrt(int x){
int left = 0;
int right = x ;
int ans = -1;
while(left <= right){
int mid = left + (right - left) / 2;
long long var = (long long)mid * mid;
if(var <= x){
ans = mid;
left = mid + 1;
}
else
right = mid -1;
}
return ans;
}