合并数组函数c++是哪个(c语言编写合并整数数组的函数)

合并数组函数c++是哪个(c语言编写合并整数数组的函数)给你两个按 非递减顺序 排列的整数数组 和 另有两个整数 和 分别表示 和 中的元素数目 请你 合并 到 中 使合并后的数组同样按 非递减顺序 排列 注意 最终 合并后数组不应由函数返回 而是存储在数组 中 为了应对这种情况 的初始长度为 其中前

大家好,我是讯享网,很高兴认识大家。



给你两个按 非递减顺序 排列的整数数组  和 ,另有两个整数  和  ,分别表示  和  中的元素数目。

请你 合并  到  中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组  中。为了应对这种情况, 的初始长度为 ,其中前  个元素表示应合并的元素,后  个元素为  ,应忽略。 的长度为  。

解题思路如下:(向后看,因为通过观察可知nums1数组向后为空,故可覆盖使用。)


讯享网

已知nums1数组长度为m+n,nums1的元素个数为m,nums2的元素个数为n。

vector使用size()得到数组长度。

代码如下:

 
  
讯享网

使用swap函数的方法也可以用赋值表示,但是赋值的话使用的时间更久,对于内存占用较为不优化,个人较推荐swap()函数方法。

时间复杂度相较于第一种方法较低,注意使用insert和erase函数的时候注意区间为左闭右开。

[0,0)则无法选0。故需要在length+1因为无法选取到1,可以尝试不+1看运行结果会报什么错误,一开始忘记左闭右开区间一直报错TvT。

使用erase()函数是因为,比如会有情况如下:

讯享网

双指针法个人觉得比较较好理解,搬力扣官方解释图使用一下~

简单一点解释就是使用两个指针,分别指向nums1和nums2,依次比较两个指针所指向数组数值大小,将小的那一方放入sorted数组里就ok啦。

超时代码如下:原本是以为使用++也可以通过没想到超时,并且if条件判断的顺序也导致了超时的产生TvT。

 

代码优化如下:

讯享网

逆向双指针与方法三都是使用的指针方法,不同的地方在于,方法三顺向使用可能会有冲突,所以新建了一个数组依次存放,而通过观察可知nums1数组尾部很安全,所以使用逆向双指针节省空间。

 

代码如下:

讯享网

该方法较为直接得出~


小讯
上一篇 2025-05-07 07:37
下一篇 2025-06-13 08:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/188642.html