算法与数据结构(合并两个有序数组)

题目

思路

因为nums1数组的长度的长度等于m+n,所以我们可以采用逆向双指针的方法,分别从nums1的m-1的位置和nums2的n-1的位置向前遍历,选取它们两个之间较大的数分别向nums1的m+n-1的位置开始不断向前插入

解题过程

定义好cur1,cur2和k后,在确保nums1和nums2都没遍历完的情况下选择较大的元素放到k位置,以此循环。

最后若nums2中的元素没有遍历完,则挨个向k位置插入。

如果nums1中的元素没有遍历完,则无需操作,因为nums1中前面的元素是有序的。

代码

cpp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) 
    {
        int cur1 = m-1,cur2 = n-1;
        int k = m+n-1;
        while(cur1>=0 && cur2>=0)
        {
            //选择较大的放到k位置
            if(nums1[cur1] < nums2[cur2])
            nums1[k--] = nums2[cur2--];
            else
            nums1[k--] = nums1[cur1--];
        }

        while(cur2>=0)
        {
            nums1[k--] = nums2[cur2--];
        }
    }
};
相关推荐
鹿角片ljp20 小时前
LeetCode 46. 全排列|吃透回溯
算法·leetcode·职场和发展
鼎艺创新科技21 小时前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
石头猫灯21 小时前
WordPress wp2shell 漏洞链完整拆解流程
网络·数据结构·安全·web安全
.道阻且长.1 天前
11.LeetCode算法习题讲解--滑动窗口--将x减到0的最小操作数
算法·leetcode·职场和发展
wenyq71 天前
LeetCode 2460. Apply Operations to an Array
算法·leetcode
.格子衫.1 天前
032动态规划之区间DP——算法备赛
算法·动态规划
青 春 记 忆1 天前
LeetCode 142. 环形链表 II|Python 解法详解
python·leetcode·链表
小欣加油1 天前
leetcode3069 将元素分配到两个数组中I
数据结构·c++·算法·leetcode·职场和发展
不会代码的小猴1 天前
7. JSON
开发语言·c++·笔记·qt·算法·json
怪奇云呼军1 天前
知识库也会注入指令?闪电智能VoiceAgent 如何防住 Prompt Injection
人工智能·python·算法·云计算·音视频