【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--;
            }
        }
    }
};
相关推荐
wenyq7几秒前
LeetCode 2460. Apply Operations to an Array
算法·leetcode
jike_20268 分钟前
4款会议翻译转写工具对比:多语言、方言和线下会议怎么选?
人工智能·语音识别·iphone
闻道且行之9 分钟前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
ages_12314 分钟前
AI销售手机技术架构深度解析:从MDM终端管控到LLM业务赋能的完整闭环
人工智能·智能手机·ai销售手机·ai拓客·ai员工手机·剪流ai员工手机
正经教主22 分钟前
AI提示词工程(专家级)第26课:对抗性提示与模型安全
人工智能
码士集团小青42 分钟前
YOLO:将AI Agents嵌入到IntelliJ IDEA
人工智能
mqiqe44 分钟前
AgentScope Java 2.0 Agent 状态存储(AgentStateStore)深度解析:构建可恢复、可扩展的智能体运行时
java·运维·网络
yanghuashuiyue1 小时前
RNN结构记录
人工智能·rnn·深度学习
mennekes1 小时前
数据中心安全配电设备如何选择?
运维·人工智能·科技·安全·制造
.格子衫.1 小时前
032动态规划之区间DP——算法备赛
算法·动态规划