【快乐手撕LeetCode题解系列】——合并两个有序数组

简介: 哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【快乐手撕LeetCode题解系列】——合并两个有序数组~ 都是精华内容,可不要错过哟!!!😍😍😍

微信图片_20230427214238.gif

😎博客昵称:博客小梦

😊最喜欢的座右铭:全神贯注的上吧!!!

😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

微信图片_20230427160707.gif


前言🙌



    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【快乐手撕LeetCode题解系列】——合并两个有序数组~ 都是精华内容,可不要错过哟!!!😍😍😍


消失的数字🙌


题目描述:


微信图片_20230428194642.png

微信图片_20230428194649.png


画图分析:


微信图片_20230428194654.png


思路分析:


1.首先是认真审题,看清楚题目要求,理解函数形参的意思。这里有两个参数是无需用到的。

2.这里定义三个指针,end1,end2,end。其实下标就是相当于进行操作指针。

3.首先让end1指向nums1数组最后一个元素,end2指向nums2的最后一个元素。让end指向nums1数组空间的最后一个位置。

4.当end1和end2都没有遍历完时,比较他们所指向的元素大小。

5.因为题目说明是非递减的,因此我们要把较大值先放到 end 下标的位置。然后再让他们往前各走一步。重复上述步骤。

6.当nums1先遍历完时,只需要将nums2剩下没有遍历的数组元素按照从后往前依次拷贝到nums1的end下标的位置中。


源代码分享:😍


void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{
    int end1 = m - 1;
    int end2 = n - 1;
    int end = n + m - 1;
    while(end1 >= 0 && end2 >= 0)
    {
        if(nums1[end1] < nums2[end2])
        {
            nums1[end--] = nums2[end2--];
        }
        else
        {
            nums1[end--] = nums1[end1--];
        }
    }
    while(end2 >= 0)
    {
        nums1[end--] = nums2[end2--];
    }
}


程序输出结果验证: 😊


微信图片_20230428194835.png


总结撒花💞


   本篇文章旨在分享【快乐手撕LeetCode题解系列】——合并两个有序数组。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘


相关文章
|
28天前
|
存储 Java API
LeetCode------合并两个有序数组(4)【数组】
这篇文章介绍了LeetCode上的"合并两个有序数组"问题,并提供了三种解法:第一种是使用Java的Arrays.sort()方法直接对合并后的数组进行排序;第二种是使用辅助数组和双指针技术进行合并;第三种则是从后向前的双指针方法,避免了使用额外的辅助数组。
LeetCode------合并两个有序数组(4)【数组】
|
27天前
|
算法
LeetCode第26题删除有序数组中的重复项
这篇文章介绍了LeetCode第26题"删除有序数组中的重复项"的解题方法,通过使用双指针技巧,高效地去除数组中的相邻重复元素。
LeetCode第26题删除有序数组中的重复项
|
26天前
|
算法
LeetCode第80题删除有序数组中的重复项 II
文章介绍了LeetCode第80题"删除有序数组中的重复项 II"的解法,利用双指针技术在O(1)空间复杂度内原地删除重复元素,并总结了双指针技术在处理有序数组问题中的应用。
LeetCode第80题删除有序数组中的重复项 II
|
1月前
|
Python
【Leetcode刷题Python】977. 有序数组的平方
解决LeetCode "有序数组的平方" 问题的方法:使用Python内置的快速排序、直接插入排序(但会超时)和双指针技术,并给出了每种方法的Python实现代码。
11 1
【Leetcode刷题Python】977. 有序数组的平方
|
26天前
|
算法
LeetCode第88题合并两个有序数组
文章分享了LeetCode第88题"合并两个有序数组"的解法,通过从后向前的合并策略避免了数组元素的前移,使用三个指针高效地完成了合并过程。
|
1月前
|
Python
【Leetcode刷题Python】108. 将有序数组转换为二叉搜索树
LeetCode上108号问题"将有序数组转换为二叉搜索树"的Python实现,通过递归选取数组中间值作为根节点,构建高度平衡的二叉搜索树。
20 2
|
1月前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
40 0
|
1月前
|
Python
【Leetcode刷题Python】26. 删除有序数组中的重复项
本文提供了一种使用快慢指针法在原地删除升序数组中重复元素的Python实现,返回删除后数组的新长度,同时保持元素的相对顺序。
25 0
|
1月前
|
存储 Python
【Leetcode刷题Python】88. 合并两个有序数组
合并两个有序数组的方法:正向双指针法和逆向双指针法,都具有O(m+n)的时间复杂度,但前者的空间复杂度为O(m+n),后者的空间复杂度为O(1),并给出了Python语言的实现代码。
29 0
|
2月前
|
Java
力扣经典150题第五十八题:合并两个有序链表
力扣经典150题第五十八题:合并两个有序链表
26 2