0
点赞
收藏
分享

微信扫一扫

LeedCode 88 合并两个有序数组

东方小不点 2022-03-30 阅读 50
c++

第一个思路,也是正常人一下子就能想出来的思路,我直接把nums2插入到nums1中,用sort排序即可,哈哈哈,到时候面试官跟你说让你回去等通知吧。

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)
    {
        while(n)
        {
            nums1[m] = nums2[n - 1];
            m++;n--;
        }
        sort(nums1.begin(),nums1.end());
    }
};

第二个方法,是双指针法,因为这个题已经给出是排好序的两个向量

p1指向nums1的位置,p2指向nums2的位置,然后比较

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)
    {
        int p1,p2,cur;
        p1 = p2 = 0;
        int sort[m+n];
        while(p1 < m || p2 < n)
        {
            if(p1 == m)
            {
                cur = nums2[p2++];
            }
            else if(p2 == n)
                {
                    cur = nums1[p1++];
                }
                else if(nums1[p1] < nums2[p2])
                    {
                        cur = nums1[p1++];
                    }
                    else
                        cur = nums2[p2++];
            
            sort[p1 + p2 - 1] = cur;
        }
        for(int i = 0;i < m+n;i++)
            nums1[i] = sort[i];
    }
};
举报

相关推荐

0 条评论