题目描述
给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。
初始化 A 和 B 的元素数量分别为 m 和 n。
示例:
1 | 输入: |
说明:
A.length == n + m
题解
双指针
这道题是将另一个数组并入第一个数组中, 采用从后向前遍历的方法
因为两个数组都是有序的,并且数组1的空间大小是填充后新数组的空间大小. 两个数组从后开始遍历, 将较大的元素放入数组1
遍历到最后的结果有两种:
nums2
遍历完,说明nums1
剩余的元素就是最小的, 不用管nums1
遍历完,说明nums2
剩余的元素就是最小的,需要复制到nums1
中.
1 | public void merge(int[] A, int m, int[] B, int n) { |