合并两个有序数组
题目:https://leetcode.cn/problems/merge-sorted-array/
- 两个数组是有序的,存在一个大数组 nums1、一个小数组 nums2。
- 将大数组 nums1中,有序的那部分元素 copy 出来,记为 nums1copy,采用双指针移动法,一个指针指向 nums1copy,另一个指针指向 nums2
- 哪个指针指向的元素小,就将该元素复制到原来的大数组 nums1
代码:
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int[] nums1copy = new int[m];
System.arraycopy(nums1, 0, nums1copy, 0, m);
//nums1copy 和 nums2 数组都是有序的
int i, j, k;
i = j = k = 0;
while (i < nums1copy.length && j < nums2.length) {
if (nums1copy[i] < nums2[j]) {
nums1[k++] = nums1copy[i++];
}else {
nums1[k++] = nums2[j++];
}
}
while (i < nums1copy.length) {
nums1[k++] = nums1copy[i++];
}
while (j < nums2.length) {
nums1[k++] = nums2[j++];
}
}
}

浙公网安备 33010602011771号