🌗 88. 合并两个有序数组

吞佛童子2022年10月10日
  • algorithm
  • array
小于 1 分钟

🌗 88. 合并两个有序数组

难度: 🌗

问题描述

img_29.png


解法

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        // 思路:
        // 从右往左遍历,遇到大的进行填充右边的零
        if(m == 0) {
            System.arraycopy(nums2, 0, nums1, 0, n);
            return;
        }
        if(n == 0) {
            return;
        }
        int a = m - 1;
        int b = n - 1;
        int index = m + n - 1;
        while(b >= 0 && a >= 0) {
            if(nums2[b] >= nums1[a]) {
                nums1[index] = nums2[b];
                b --;
                index --;
            } else {
                nums1[index] = nums1[a];
                a --;
                index --;
            }
        }
        if(b >= 0) {
            System.arraycopy(nums2, 0, nums1, 0, b + 1);
        }
    }
}

输出

img_28.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou