合并两个有序数组

Posted 氵冫丶

tags:

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

文章目录

1.题目

2. 发现规律

  1. 两个数组都是有序的,希望合并成一个还是有序的,每次选取比较小的放在新的数组里面就好了;
  2. 但是题目要求放在 nums1的数组里面,nums1的大小大于等于 m + n ,所以可以反过来
  3. 每次选取最大的放在 nums1的 m + n -1 的位置
class Solution 
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) 
        int k = m + n - 1, i = m - 1, j = n - 1;
        int max = -1;
        while (k >= 0) 
            if (i >= 0 && j >= 0) 
                if (nums1[i] >= nums2[j]) 
                    nums1[k] = nums1[i];
                    --i;
                 else 
                    nums1[k] = nums2[j];
                    --j;
                
             else if (j >= 0) 
                nums1[k] = nums2[j];
                --j;
             else if (i >= 0) 
                nums1[k] = nums1[i];
                --i;
            
            --k;
        
    
;

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

合并两个有序数组,合并后数组仍有序

合并两个有序数组

88. 合并两个有序数组

双指针2合并两个有序数组

双指针2合并两个有序数组

力扣——合并两个有序数组