当前位置:网站首页 > 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数组尾部很安全,所以使用逆向双指针节省空间。

 
  

代码如下:

 
  

该方法较为直接得出~

到此这篇合并数组函数c++是哪个(c语言编写合并整数数组的函数)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • conda卸载虚拟环境(conda怎么删除虚拟环境)2025-07-14 11:18:09
  • 无法安装32位win10(无法安装32位版本的office,因为在您的pc上)2025-07-14 11:18:09
  • git clone和直接下载的区别(git clone下载速度慢)2025-07-14 11:18:09
  • xdc是什么缩写(xdc是什么意思的缩写)2025-07-14 11:18:09
  • git clone下载(git clone下载不了)2025-07-14 11:18:09
  • codependence 翻译(codesys翻译)2025-07-14 11:18:09
  • xmouse怎么设置中文(x mouse 设置csol)2025-07-14 11:18:09
  • 找不到msvcp140_1(找不到msvcp140_1.dll是什么意思)2025-07-14 11:18:09
  • mouse 下载(abcmouse下载)2025-07-14 11:18:09
  • plc下位组件错误重启下就ok了(下位组件出错 plc)2025-07-14 11:18:09
  • 全屏图片