博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[c++]合并排序多个已排好序的单项链表
阅读量:5908 次
发布时间:2019-06-19

本文共 2242 字,大约阅读时间需要 7 分钟。

题目来源:Leetcode

题目描述:

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

Example:

Input:[  1->4->5,  1->3->4,  2->6]Output: 1->1->2->3->4->4->5->6

思路:不断合并两个链直到所有合并完成O(kN

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode* mergeKLists(vector
& lists) {12 ListNode* r=NULL;13 if(lists.size()==0) return r;14 for(int i=0;i
val<=r2->val) { r1->next=mergeTwo(r1->next,r2); return r1;}25 else { r2->next=mergeTwo(r1,r2->next); return r2;}26 }27 };

附加思路:将所有链表不断切半到只剩下两个,将其合并,回到上一层,将其合并


 

附加思路:先遍历所有链表把他们的值放入一个数组,放的时候就排序好的放,然后把链表连起来成一个链表,把数组的值依次赋值

Time complexity : O(N\log N)O(NlogN) where NN is the total number of nodes.

  • Collecting all the values costs O(N)O(N) time.
  • A stable sorting algorithm costs O(N\log N)O(NlogN) time.
  • Iterating for creating the linked list costs O(N)O(N) time.
1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode* mergeKLists(vector
& lists) {12 ListNode* r=NULL;13 if(lists.size()==0) return r;14 vector
m;15 for(int i=0;i
val);t=t->next;}20 }21 QuickSort(m,0,m.size()-1);22 r=lists[0];23 int j=0;24 for(int i=0;i
next!=NULL)28 {29 t->val=m[j];30 ++j;31 }32 t->val=m[j];33 if(i+1
next=lists[i+1];34 }35 return r;36 }37 void QuickSort(vector
& list,int p,int r)//快排38 {39 40 if(p
& list,int p,int r)47 {48 int i=p,j=r+1;49 int x=list[p];50 while(1)51 {52 while(list[++i]
x);54 if(i>=j) break;55 int temp=list[i];56 list[i]=list[j];57 list[j]=temp;58 }59 list[p]=list[j];60 list[j]=x;61 return j;62 }63 };

Run Code

Runtime Error

 

转载于:https://www.cnblogs.com/cuphoria/p/9942251.html

你可能感兴趣的文章
《Servlet和JSP学习指南》一1.3 编写基础的Servlet应用程序
查看>>
云服务鼻祖来告诉你99%的创业者不知道的事
查看>>
快递单信息泄露惊人 隐形面单能拯救你的隐私吗?
查看>>
Nginx 反向代理 分配方式 防攻击真实Ip
查看>>
近5年133个Java面试问题列表
查看>>
在开源氛围下,“够用就是最好”
查看>>
elasticsearch Java API 之Bulk API(批量操作)
查看>>
[Maven问题总结]Jetty9的Maven配置——插件服务器
查看>>
rename命令
查看>>
【深入Lua】使用LDoc替代LuaDoc给Lua生成文档
查看>>
android 实现QQ好友列表(扩展listview:ExpandableListView)
查看>>
cacti
查看>>
[转载]Dubbo服务治理
查看>>
架构图
查看>>
linux文件属性、特殊符号、通配符、通配符与正则的区别
查看>>
Linux监控平台介绍, zabbix监控介绍,安装zabbix,忘记Admin密码如何做
查看>>
克拉克拉(KilaKila):大规模实时计算平台架构实战
查看>>
我的友情链接
查看>>
leetCode 203. Remove Linked List Elements 链表
查看>>
Python import中相对路径的问题
查看>>