【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--;
            }
        }
    }
};
相关推荐
火山引擎开发者社区1 分钟前
Agentkit 携手倍孜网络打造广告素材巡检 Agent 最佳实践
人工智能
SelectDB技术团队2 分钟前
Apache Doris + SelectDB:定义 AI 时代,实时分析的三大范式
数据库·数据仓库·人工智能·云原生·实时分析
CoderJia程序员甲3 分钟前
GitHub 热榜项目 - 日榜(2026-03-16)
人工智能·ai·大模型·github·ai教程
weberCd3 分钟前
2026年GPT5.4 国内使用教程
人工智能
DeeGLMath3 分钟前
从基础算法到机器学习的研究轨迹
人工智能·算法·机器学习
Barkamin8 分钟前
冒泡排序的简单实现
java·算法·排序算法
_dindong8 分钟前
【单调栈/队列&并查集&字符串哈希&Tire树】习题集锦
数据结构·c++·算法·哈希算法
西装没钱买11 分钟前
QT组播的建立和使用(绑定特定的网卡,绑定特定IP)
网络·c++·qt·udp·udp组播
江畔何人初11 分钟前
HPA是如何在k8s集群实现自动扩缩容机制的
linux·运维·服务器·云原生·kubernetes
Yokon_D17 分钟前
二分类精度指标计算
人工智能·分类·数据挖掘