返回轨道
算法 · 2026-05-14 · 25 阅读

P19 合并两个有序数组

算法 25 阅读

信号摘要

难度:Easy · 时长:03:38 · leetcode 88 · lintcode 64

P19 合并两个有序数组

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你两个递增排序的数组,你要把第二个数组合并到第一个,并使其仍然保持递增排序。两个数组中的元素个数会显式地给出,并且第一个数组的大小可以容纳下两个数组中所有的元素。

比如说给你的两个数组是:

2, 4, _, _ 1, 3

它们都有 2 个元素。并且第一个数组后面有足够的空间来填充第二个数组。把第二个数组合并到第一个数组后,得到的是:

1, 2, 3, 4

代码

public class AlgoCasts {

  // Time: O(m+n), Space: O(1)
  public void mergeTwoSortedArray(int[] nums1, int m, int[] nums2, int n) {
    int i = m - 1, j = n - 1, k = m + n - 1;
    while (i >= 0 && j >= 0) {
      if (nums2[j] > nums1[i])
        nums1[k--] = nums2[j--];
      else
        nums1[k--] = nums1[i--];
    }
    while (j >= 0) nums1[k--] = nums2[j--];
  }

}

📡 通讯频道