🌕 69. x 的平方根
2022年6月9日
- algorithm
🌕 69. x 的平方根
难度: 🌕
问题描述
解法
class Solution {
public int mySqrt(int x) {
// 思路:
// 二分
return mySol((long) x, 1, x);
}
private int mySol(long target, int left, int right) {
// 递归终止条件
if(left >= right) {
return right;
}
// left < right
int mid = left + ((right - left) >> 1) + 1; // 致力于找右边界,防止 left = mid 死循环
long mul = (long) mid * (long) mid;
if(target == mul) {
return mid;
} else if(target > mul) {
left = mid;
return mySol(target, left, right);
} else {
// target < mul
right = mid - 1;
return mySol(target, left, right);
}
}
}