美文网首页
10.01. 合并排序的数组

10.01. 合并排序的数组

作者: 最尾一名 | 来源:发表于2020-03-03 15:04 被阅读0次

原题

https://leetcode-cn.com/problems/sorted-merge-lcci/

解题思路

由于数组 A、B 都是递增的,我们从 A、B 数组的最后一位向前遍历,较大的放到 A 数组较后位置。

代码

/**
 * @param {number[]} A
 * @param {number} m
 * @param {number[]} B
 * @param {number} n
 * @return {void} Do not return anything, modify A in-place instead.
 */
var merge = function(A, m, B, n) {
    if (m === 0) {
        for (let i = 0; i < n; ++i) {
            A[i] = B[i];
        }
        return;
    }
    let indexA = m - 1, indexB = n - 1, lastIndex = m + n - 1;
    while (indexA >= 0 && indexB >= 0) {
        if (A[indexA] > B[indexB]) {
            A[lastIndex] = A[indexA];
            --indexA;
        } else {
            A[lastIndex] = B[indexB];
            --indexB;
        }
        --lastIndex;
    }
    for (let i = indexB; i >= 0; --i) {
        A[i] = B[indexB];
        --indexB;
    }
};

复杂度

  • 时间复杂度 O(M+N)
  • 空间复杂度 O(1)

相关文章

网友评论

      本文标题:10.01. 合并排序的数组

      本文链接:https://www.haomeiwen.com/subject/ewqhlhtx.html