LEEDCODE 88合并两个有序数组

LEEDCODE 88合并两个有序数组_第1张图片

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        vector<int> a;
        int i=0;
        int j=0;
        while(i<m && j<n)
        {
            if(nums1[i]<nums2[j])
            {
                a.push_back(nums1[i]);
                i += 1;
            }
            else if(nums1[i]>nums2[j])
            {
                a.push_back(nums2[j]);
                j += 1;
            }
            else
            {
                a.push_back(nums1[i]);
                a.push_back(nums2[j]);
                i += 1;
                j += 1;
            }

        }
        if(i == m && j<n)
        {
            while(j<n)
            {
                a.push_back(nums2[j]);
                j += 1;
            }
        }
        if(j == n && i<m)
        {
            while(i<m)
            {
                a.push_back(nums1[i]);
                i += 1;
            }
        }
        for(int i = 0;i<(m+n); i++)
        {
            nums1[i] = a[i];
        }

    }
};

LEEDCODE 88合并两个有序数组_第2张图片

你可能感兴趣的:(算法,c++)