LeetCode88-简单-合并两个有序数组

Posted 再吃一个橘子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode88-简单-合并两个有序数组相关的知识,希望对你有一定的参考价值。

思路:

首先思考,如果一个指针指nums1,一个指针指nums2;他俩开始比,大的放nums1,就会产生覆盖。那该怎么去做呢??

方法1:重开一个m+n大的数组....

方法2:(更好的方法)从后往前比较!

考虑两种情况  ————(  画图推一遍  )

AC代码:

//时间复杂度是O(N)
//空间复杂度是O(1)
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
    int end1 = m-1,end2 = n-1;
    int end = m+n-1;
    while(end1 >= 0 && end2 >= 0)
    
        if(nums1[end1] > nums2[end2])
        
            nums1[end--] = nums1[end1--];
        
        else
        
            nums1[end--] = nums2[end2--];
        
    
    while(end2 >= 0)
    
        nums1[end--] = nums2[end2--];
    

以上是关于LeetCode88-简单-合并两个有序数组的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode88-简单-合并两个有序数组

⭐算法入门⭐《简单排序》简单02 —— LeetCode 88. 合并两个有序数组

LeetCode刷题88-简单-合并两个有序数组

LeetCode刷题88-简单-合并两个有序数组

Leetcode刷题100天—88. 合并两个有序数组(数组+双指针)—day23

Leetcode刷题100天—88. 合并两个有序数组(数组+双指针)—day23