Open unliar opened 3 years ago
二分查找法
const mySqrt = (x) => {
if (x < 2) return x;
let left = 1;
let right = ~~(x / 2);
while (left + 1 < right) {
const mid = ~~((left + right) / 2);
if (mid * mid == x) {
return mid;
}
if (mid * mid < x) {
left = mid;
} else {
right = mid;
}
}
return right > x / right ? left : right;
};
leetcode