【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--;
            }
        }
    }
};
相关推荐
zhangshuang-peta几秒前
MCP 的执行与回执:如何让每一步可追踪、可验证、可审计?
人工智能·ai agent·mcp·peta
深邃-1 分钟前
字符函数和字符串函数(1)
c语言·开发语言·数据结构·c++·算法·html5
初中就开始混世的大魔王1 分钟前
3.1 DDS 层-Core
开发语言·c++·网络协议·tcp/ip·信息与通信
我真不是小鱼2 分钟前
cpp刷题打卡记录24——路径总和 & 路径总和II
数据结构·c++·算法·leetcode
NineData2 分钟前
MySQL到StarRocks 同步链路中的建表、DDL 跟随与数据校验
运维·数据库·starrocks·mysql·数据迁移·数据库管理工具·ninedata
无代码专家3 分钟前
轻流 AI OA 系统的持续演进之路——生产管理全流程解析
人工智能·无代码
码农垦荒笔记6 分钟前
LLM 后训练革命:GRPO、DAPO 与 RLVR 如何替代 RLHF 重塑大模型对齐训练
人工智能·强化学习·grpo·dapo
星晨雪海6 分钟前
MyBatis-Plus 常用 CRUD 方法大全
linux·tomcat·mybatis
2739920296 分钟前
Ubuntu 文件系统修复指南
linux·ubuntu·fsck