以下为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),但实现比较复杂,不在本题范围内。