【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--;
            }
        }
    }
};
相关推荐
量子-Alex几秒前
【大模型技术报告】DeepSeek LLM Scaling Open-Source Language Models with Longtermism
人工智能·语言模型·自然语言处理
csuzhucong1 分钟前
力扣OJ(2301-2600)
算法·leetcode·职场和发展
sjsjsbbsbsn3 分钟前
RAG核心学习总结:文本分块
人工智能·学习·知识图谱
Westward-sun.4 分钟前
YOLOv5 最新版从零配置环境到训练自己的数据集
人工智能·pytorch·深度学习·yolo
VBsemi-专注于MOSFET研发定制4 分钟前
面向高可靠与快速响应需求的高端报警系统功率MOSFET选型策略与器件适配手册
网络·人工智能
默 语4 分钟前
AI Agent 数据感知层实战:网络端点定位在跨境电商、金融风控、自动化营销中的技术实现
网络·人工智能·自动化
玛丽莲茼蒿5 分钟前
Leetcode hot100 旋转图像【中等】
算法·leetcode·职场和发展
2601_956139425 分钟前
航空航天品牌策划公司哪家强
大数据·人工智能·python
xiezhr6 分钟前
别被AI吓到了,一文看懂AI到底是啥?
人工智能·llm·openai
ting94520006 分钟前
ComNet 深度解析:模型驱动深度学习在 OFDM 接收机中的革命性应用
人工智能·深度学习