美文网首页
【算法】合并两个有序数组 - 双指针

【算法】合并两个有序数组 - 双指针

作者: 王月亮17 | 来源:发表于2024-04-08 16:01 被阅读0次

题目

两个有序整数数组 nums1 和 nums2 及他们的元素个数 m、n,将 nums2 合并到 nums1 中,结果依然有序。
nums1 长度默认为 m + n,没有元素的位置用 0 补齐。

原理

定义三个指针,分别指向 nums1 的最大元素(p1)、nums2 的最大元素(p2)、nums1 的最后一个元素(空位)(p)。依次对比 p1 和 p2 的大小,大的放到 p 的位置,前移已经移动的指针和 p 指针即可。

代码

    public static void main(String[] args) {
        int[] nums1 = new int[]{1, 3, 5, 7, 9, 0, 0, 0, 0};
        int[] nums2 = new int[]{2, 4, 6, 8};
        combineArray(nums1, 5, nums2, 4);
        System.out.println(Arrays.toString(nums1));
    }

    private static void combineArray(int[] nums1, int m, int[] nums2, int n) {
        int p = nums1.length - 1, p1 = m - 1, p2 = n - 1;
        while (p1 >= 0 && p2 >= 0) {
            nums1[p--] = nums1[p1] > nums2[p2] ? nums1[p1--] : nums2[p2--];
        }
    }

相关文章

  • 88. 合并两个有序数组

    88. 合并两个有序数组 双指针

  • Leetcode 88. 合并两个有序数组

    Tags: Two Pointer,双指针 题目 88. 合并两个有序数组 给定两个有序整数数组 nums1 和 ...

  • 2020-02-16 刷题 3(链表)

    21 合并两个有序链表 标签:归并,双指针,链表解题思路类似于二路归并算法,采用双指针法,将其中一个链表作为待合并...

  • 对两个有序的数组进行合并

    1、算法描述: 有两个有序的整型数组arrayA,和arrayB,先要将它俩合并得到新的合并数组同样是有序的。示例...

  • LeetCode | 0088. Merge Sorted Ar

    LeetCode 0088. Merge Sorted Array合并两个有序数组【Easy】【Python】【双...

  • 合并两个有序数组(C)

    合并两个有序数组,合并完之后仍有序:

  • 有序数组合并

    1、两个有序数组合并(产生新数组) 2、两个有序数组合并(返回原来某个数组)

  • 归并排序

    基本原理 将两个有序数组合并为一个有序数组当两个数组均有序时,可以使用快慢指针的方法,只需O(n)的时间复杂度归并...

  • iOS面试之算法大全

    算法 算法内容如下: 字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中...

  • iOS面试之算法模块

    算法 算法内容如下: 字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中...

网友评论

      本文标题:【算法】合并两个有序数组 - 双指针

      本文链接:https://www.haomeiwen.com/subject/jxvatjtx.html