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

BFE.devAI解答 - JavaScript 代码题
81. 合并已排序的数组

解答:

题目要求合并已排序的数组,我们可以用归并排序的思想,将多个有序数组合并成一个有序数组。

具体实现可以用类似于归并排序合并两个有序数组的思路,把所有输入的数组按顺序两两配对合并,直到最终只剩下一个数组为止。

具体代码实现如下:

function merge(arrays) {
  while (arrays.length > 1) {
    const temp = []
    for (let i = 0; i < arrays.length; i += 2) {
      const merged = []
      let left = arrays[i]
      let right = arrays[i + 1]
      if (!left || !right) {
        temp.push(left || right)
        continue
      }
      let l = 0
      let r = 0
      while (l < left.length || r < right.length) {
        if (l === left.length) {
          merged.push(right[r])
          r++
        } else if (r === right.length) {
          merged.push(left[l])
          l++
        } else if (left[l] <= right[r]) {
          merged.push(left[l])
          l++
        } else {
          merged.push(right[r])
          r++
        }
      }
      temp.push(merged)
    }
    arrays = temp
  }
  return arrays[0] || []
}

时间复杂度为O(N*log(M)),其中N是所有输入数组的总个数,M是每个输入数组的平均长度。空间复杂度为O(N+M)。