您的位置:首页 > 其它

LeetCode 69 Sqrt(x)

2018-01-24 21:52 525 查看
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