力扣88.合并两个有序数组【顺序表】

简介: 力扣88.合并两个有序数组【顺序表】

🎈今日心语:你所看到的惊艳,都曾被平庸所历练。



前言:

适合学习了数据结构顺序表后做,此题虽然简单,但是必须结合画图进行分析,同时要仔细阅读题目。


文章目录


题目要求:


题目分析:

思路:

但是题目中并没有让我们合并到新数组中,而是要求合并到nums1中,题目中已经将空间开好

思路2:采用三指针,i1和i2从后往前进行比较,例如开始时:

i1指向nums1中的3,i2指向nums2末尾的6,j指向nums1末尾的0;

3<6,将i2指向的值给了j,然后i2–,j–;

i1暂时不需要向前偏移,将继续和i2指向的下一个位置进行比较

如上图,我们采取,指针从后逐渐向前偏移的方式,使得nums2从后往前放到nums1后面,但是通过画图,我们发现会出现两种情况:

1.当i2先走完,这时nums1中的元素就是合并后的结果。

2.当i1先走完,这时,需要将nums2中剩余的值放到nums1中,此时的nums1才是最后的结果。


最终代码:

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{
    int i1 = m-1,i2 = n-1;
    int j = m+n-1;
    while(i1 >= 0 && i2 >=0)//不满足一个条件就结束
    {
        if(nums1[i1] > nums2[i2])
        {
            nums1[j--] = nums1[i1--];
            //相当于
            //nums1[j] = nums1[i1];
            //j--;
            //i1--;
        } 
        else
        {
            nums1[j--] = nums2[i2--];
        }
    }
    while(i2 >=0)//当i1走完,i2未走完
    {
        nums1[j--] = nums2[i2--];
    }
}

结语:

这里本章内容就介绍完了,文章中某些内容我们之前有介绍,所以只是一笔带过,还请谅解。

希望以上内容对大家有所帮助👀,如有不足望指出🙏

前路漫漫!努力变强💪💪 吧!!



相关文章
leetCode(删除有序数组中的重复项)
如何在不使用额外空间的情况下,通过双指针法原地删除有序数组中的重复项。
120 2
|
9月前
|
Go 索引 Perl
【LeetCode 热题100】【二叉树构造题精讲:前序 + 中序建树 & 有序数组构造 BST】(详细解析)(Go语言版)
本文详细解析了二叉树构造的两类经典问题:通过前序与中序遍历重建二叉树(LeetCode 105),以及将有序数组转化为平衡二叉搜索树(BST,LeetCode 108)。文章从核心思路、递归解法到实现细节逐一拆解,强调通过索引控制子树范围以优化性能,并对比两题的不同构造逻辑。最后总结通用构造套路,提供进阶思考方向,帮助彻底掌握二叉树构造类题目。
557 9
|
存储 Java API
LeetCode------合并两个有序数组(4)【数组】
这篇文章介绍了LeetCode上的"合并两个有序数组"问题,并提供了三种解法:第一种是使用Java的Arrays.sort()方法直接对合并后的数组进行排序;第二种是使用辅助数组和双指针技术进行合并;第三种则是从后向前的双指针方法,避免了使用额外的辅助数组。
LeetCode------合并两个有序数组(4)【数组】
LeetCode第26题删除有序数组中的重复项
这篇文章介绍了LeetCode第26题"删除有序数组中的重复项"的解题方法,通过使用双指针技巧,高效地去除数组中的相邻重复元素。
LeetCode第26题删除有序数组中的重复项
LeetCode第80题删除有序数组中的重复项 II
文章介绍了LeetCode第80题"删除有序数组中的重复项 II"的解法,利用双指针技术在O(1)空间复杂度内原地删除重复元素,并总结了双指针技术在处理有序数组问题中的应用。
LeetCode第80题删除有序数组中的重复项 II
【LeetCode 48】108.将有序数组转换为二叉搜索树
【LeetCode 48】108.将有序数组转换为二叉搜索树
136 0
LeetCode第88题合并两个有序数组
文章分享了LeetCode第88题"合并两个有序数组"的解法,通过从后向前的合并策略避免了数组元素的前移,使用三个指针高效地完成了合并过程。
【顺序表】算法题 --- 力扣
【顺序表】算法题 --- 力扣
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
300 6
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
405 2

热门文章

最新文章