leetcode88--合并两个有序数组

1. 题意

将两个非逆序合并到其中一个中来。

合并两个有序数组

2. 题解

2.1 合并排序

先将另个数组的值放在前面数组的末尾,再对数组进行排序。

cpp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {


        copy(nums2.begin(), nums2.end(), nums1.begin() + m);
        sort(nums1.begin(), nums1.end(), less<int>());


    }
};
// Time: O(ologn) Space: O(m+n)
2.2 双指针加辅助数组
cpp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        vector<int> aux(m + n, 0);

        int p  = 0;
        int p1 = 0;
        int p2 = 0;


        while (p1 < m || p2 < n) {  
            if ( p1 < m && p2 < n) {
                aux[p++] = nums1[p1] <= nums2[p2] ?
                    nums1[p1++] : nums2[p2++];
            }
            else {
                aux[p++] = p1 < m ? nums1[p1++] : nums2[p2++];
            }
        }

        copy(aux.begin(), aux.end(), nums1.begin());
        for(auto c:aux)
            std::cout << c << " ";

    }
};
2.3 双指针加逆序优化空间
cpp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {


        copy(nums2.begin(), nums2.end(), nums1.begin() + m);
        sort(nums1.begin(), nums1.end(), less<int>());


    }
};
相关推荐
2301_7644413310 分钟前
基于paCy模型与jsoncrack进行依存句法分析
python·算法·自然语言处理
咩咩不吃草35 分钟前
【逻辑回归】:从模型训练到评价
算法·机器学习·逻辑回归
ersaijun35 分钟前
机器人运动控制关键算法体系:从理论框架到前沿实践
算法·机器人
smj2302_7968265244 分钟前
解决leetcode第3826题.最小分割分数问题
数据结构·python·算法·leetcode
多多*1 小时前
2026年最新 测试开发工程师相关 Linux相关知识点
java·开发语言·javascript·算法·spring·java-ee·maven
VT.馒头1 小时前
【力扣】2705. 精简对象
javascript·数据结构·算法·leetcode·职场和发展·typescript
元亓亓亓1 小时前
LeetCode热题100--136. 只出现一次的数字--简单
算法·leetcode·职场和发展
2301_763472581 小时前
实时系统下的C++编程
开发语言·c++·算法
张祥6422889041 小时前
二次型:从线性代数到测量平差的桥梁
线性代数·算法·机器学习