【LeetCode】88.合并两个有序数组

题目链接:
https://leetcode.cn/problems/merge-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150

题目描述:

方法一:

将nums2数组中的元素移动到数组nums1后面,然后使用C++内置算法sort进行排序

代码实现:

cpp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        for(int i=m; i<m+n; i++){
            nums1[i] = nums2[i-m];
        }
        sort(nums1.begin(), nums1.end());
    }
};

方法二:

使用逆向双指针算法

解题思路:

边界条件:

  • p1=-1时,需要将nums2剩余的元素移动到nums1
  • p2=-1时,由于nums1nums2本就是非递减数列,因此算法结束可以直接返回

代码实现:

cpp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int p1 = m-1;
        int p2 = n-1;
        int cur = m+n-1;

        while(p1>=0 || p2>=0){
            if(p1==-1){
                nums1[cur] = nums2[p2];
                p2--;
                cur--;
            }else if(p2==-1){
                break;
            }else if(nums2[p2] >= nums1[p1]){
                nums1[cur] = nums2[p2];
                p2--;
                cur--;
            }else{
                nums1[cur] = nums1[p1];
                p1--;
                cur--;
            }
        }
    }
};
相关推荐
MayZork2 分钟前
Windows 与 Linux 下 vcpkg 的安装部署指南
linux·运维·windows
yyuuuzz5 分钟前
记一次 VPS 性能排查:共享 CPU 突发额度导致的限流
运维·服务器·人工智能
冰雪青松10 分钟前
Ubuntu 运维命令大全:从入门到精通的实战参考手册
运维·服务器·ubuntu
恋猫de小郭11 分钟前
看懂大模型架构术语,帮助你理解目前常见的大模型开源架构
前端·人工智能·ai编程
tachibana212 分钟前
复杂任务怎么做的任务拆分?
人工智能·ai·大模型·llm·agent
tachibana215 分钟前
ReAct、Plan-and-Execute、Reflection 三种范式有什么核心区别
人工智能·ai·大模型·llm·agent
————A16 分钟前
Agent 接收用户上传文件
人工智能·笔记·python·状态模式
Huazhongzhanhui25 分钟前
极智防护与绿色表改:2026中国(武汉)国际表面处理展览会涂装涂料展会前瞻
人工智能·云计算
金融小师妹29 分钟前
多因子智能推演:黄金震荡回升,杰克逊霍尔“沃什首秀”政策如何重塑金价路径的AI预测框架
大数据·人工智能·python·线性回归
阿童木写作31 分钟前
跨马翻译:AI批量图片翻译与视频字幕翻译工具推荐
人工智能·python·音视频