合并两个有序数组

题目:https://leetcode.cn/problems/merge-sorted-array/

  1. 两个数组是有序的,存在一个大数组 nums1、一个小数组 nums2。
  2. 将大数组 nums1中,有序的那部分元素 copy 出来,记为 nums1copy,采用双指针移动法,一个指针指向 nums1copy,另一个指针指向 nums2
  3. 哪个指针指向的元素小,就将该元素复制到原来的大数组 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++];
        }
    }
}
posted @ 2022-08-21 10:19  大熊猫同学  阅读(29)  评论(0)    收藏  举报