Leetcode-88: Merge Sorted Array

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/roufoo/article/details/79955642

这题跟Leetcode-21: Merge Two Sorted Lists 的解法差不多。我的方法是两个vector从后面比大小,大的那个就放到nums1的后面。

#include <iostream>
#include <vector>

using namespace std;

void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {

    int p1=m-1, p2=n-1;
    nums1.resize(m+n);   //this line is not needed to AC
    while(p1>=0|| p2>=0) {
        if (p2<0 || (p1>=0 && (nums1[p1]>=nums2[p2]))) {
            nums1[p1+p2+1]=nums1[p1];
            p1--;
        } else if (p1<0 || (p2>=0 && (nums1[p1]<nums2[p2]))){
            nums1[p1+p2+1]=nums2[p2];
            p2--;
        }
    }
}

int main()
{
    vector<int> nums1={3,4,4,7};
    vector<int> nums2={1,2,8};
    merge(nums1, nums1.size(), nums2, nums2.size());

    for (int n:nums1) cout<<n<<" "<<endl;

    return 0;
}
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页