首页 > 编程知识 正文

合并两个有序链表,数据结构自学入门教程

时间:2023-05-03 18:44:41 阅读:180203 作者:2470

给出了按非降序顺序排列的两个整数数组nums1和nums2。 其他两个整数m和n分别表示nums1和nums2的元素数。

从nums2合并到nums1,以确保合并后的数组按非降序顺序排列。

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

方法1 :从后向前插入

通过从nums1的最后位置开始插入要素,并依次向前插入,可以避免大规模的排列移位操作,时间复杂度为o(mnmnmn ) :

//class solution { public void merge (int [ ] num S1,int m,int[] nums2,int n ) ) intI=m-1; int j=n-1; int t=m n-1; while(T0J=0I=0) if ) numS1[I]numS2[j] ) { nums1[t]=nums1[i]; I----; } else{ nums1[t]=nums2[j]; j----; (t----); }while(I0t=0) ) { nums1[t]=nums2[j]; j----; T----; }while(J0T=0) ) { nums1[t]=nums1[i]; I----; T----; }}方法2 :插入后排序

时间复杂度为o(m n ) log ) m n ) m n ) log ) m n ) m n ) log ) m n ) )

class solution { public void merge (int [ ] num S1,int m,int[] nums2,int n ) { for } int m; im n; I ) { nums1[i]=nums2[i-m]; }Arrays.sort(nums1 ); }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。