public int mySqrt(int x) {
// method1直接调用api这个方法太强
// return (int)Math.sqrt((double)x);
// method2,最大整数的根,然后二分查找
// int MAX = 2147483647; sqrt(MAX) = 46340
int max_mid = 46340;
long ans = x;
int left = 0;
int right = max_mid;
int mid = (left+right)>>1;
while(left<=right) {
if(ans==mid*mid)
return mid;
else if(ans<mid*mid) {//太大就变小一点
right = mid - 1;
mid = (left+right)>>1;
}else {//太小就变大一点
left = mid + 1;
mid = (left+right)>>1;
}
}
//最后 right*right < ans*ans < left*left
return right;
}
LeetCode 69 Sqrt(x)
最新推荐文章于 2024-05-04 03:45:26 发布