合并两个有序数组

问题描述

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

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

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

解题思路

思路一:先合并数组再进行排序

这道题是比较简单的,数组nums1的长度正好是两个数组元素个数之和,那么只需要将nums2内的元素赋值给nums1数组内后面的那几个索引位即可。又说需要按非递减顺序排列,即要将合并后的数组进行升序排序。于是解题如下:

 

该算法的时间复杂度是O((m+n)log(m+n))。排列序列长度为m+n,套用快速排序的时间复杂度,平均情况为O((m+n)log(m+n))。

思路二:利用双指针(以后更新)

做完后看了一下别人的解题思路,发现还可以使用双指针来解决问题。

(1)双指针的解法一:先创建一个新的数组,长度为两个数组之和,然后将两个数组看作队列,每次从两个数组头部取出较小的数字放到新数组中。

 

posted @ 2023-02-24 21:50  园友1912508  阅读(68)  评论(0)    收藏  举报