题目:88. 合并两个有序数组

描述

给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。

 public void merge(int[] nums1, int m, int[] nums2, int n) {
        // nums2 为空 直接输出num1 即可
        if (n == 0) {
            return;
        }
        int capacity = nums1.length;
        // 将nums中的0进行更改,方便后面根据大小存储数据
        for (int i = m; i < nums1.length; i++) {
            nums1[i] = 201;
        }
        ArrayList<Integer> list = new ArrayList<>(capacity);
        int i = 0;      //存储 nums1的下标
        int j = 0;      //存储 nums2的下标

        while (capacity-- > 0) {
            if (nums1[i] <= nums2[j]) {
                list.add(nums1[i]);
                i++;
                continue;
            }
            list.add(nums2[j]);
            j++;
            //当 nums2存储元素指针接近length的时候 ,指针不移动,改变原来数值即可
            if (j == nums2.length) {
                --j;
                nums2[j] = 201;
            }
        }
        for (i = 0; i < list.size(); i++) {
            nums1[i] = list.get(i);
        }
    }
posted @ 2021-04-05 11:33  迁承_0204  阅读(36)  评论(0编辑  收藏  举报