题目描述
题解
采用二分法解决
class Solution {
public int mySqrt(int x) {
long left=0;
long right=x/2;//平方根一定比÷2要小
while(left<=right){
long mid=left+(right-left)/2;//防止溢出,就是找中点
long sqr=mid*mid;
long sqrnext=(mid+1)*(mid+1);
if(sqr==x||(sqr<x&&sqrnext>x)){
return(int) mid;
}
else if(sqr<x){
left=mid+1;
}
else{
right=mid-1;
}
}
return x;
}
}