以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
103. 实现Math.sqrt()

实现代码如下:

function mySqrt(x) {
  if (isNaN(x) || x < 0) {
    return NaN;
  }
  let left = 0;
  let right = x;
  while (left <= right) {
    let mid = Math.floor((left + right) / 2);
    let square = mid * mid;
    if (square === x) {
      return mid;
    } else if (square < x) {
      left = mid + 1;
    } else {
      right = mid - 1;
    }
  }
  return right;
}

该代码的时间复杂度为 O(log n),空间复杂度为 O(1)。可以进一步优化,例如使用牛顿迭代法实现平方根,时间复杂度可以达到 O(log log n),但实现比较复杂,不在本题范围内。