unliar / unliar.github.io

一个已经不再使用的静态博客,新的博客在后边。
https://happysooner.com
0 stars 0 forks source link

69. x的平方根 #27

Open unliar opened 3 years ago

unliar commented 3 years ago

leetcode

var mySqrt = function(x) {
    let r = Math.ceil(x/2);
    while(r*r > x){
        r = (r+x/r)/2 | 0
    }
    return r
};
unliar commented 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;
};