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