给你两个按 非递减顺序 排列的整数数组 和 ,另有两个整数 和 ,分别表示 和 中的元素数目。
请你 合并 到 中,使合并后的数组同样按 非递减顺序 排列。
注意:最终,合并后数组不应由函数返回,而是存储在数组 中。为了应对这种情况, 的初始长度为 ,其中前 个元素表示应合并的元素,后 个元素为 ,应忽略。 的长度为 。
解题思路如下:(向后看,因为通过观察可知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语言编写合并整数数组的函数)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/77052.html