面试题 10.01. 合并排序的数组

题目

给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。

初始化 A 和 B 的元素数量分别为 m 和 n。

示例1:

1
2
3
4
5
输入:
A = [1,2,3,0,0,0], m = 3
B = [2,5,6], n = 3

输出: [1,2,2,3,5,6]

提示:

  • A.length == n + m

解法

解法一:

1
2
3
4
5
6
7
8
9
public void merge(int[] nums1, int m, int[] nums2, int n) {
for (int i = m - 1, j = n - 1, k = m + n - 1;k >= 0;k--) {
if (i >= 0 && (j < 0 || nums1[i] > nums2[j] )) {
nums1[k] = nums1[i--];
} else {
nums1[k] = nums2[j--];
}
}
}
0%