LeetCode: Merge k Sorted Lists
自己写的太复杂了,一开始想的是给开始的lists头们排序,然后从这个序列的第一个抽出来,然后再重新用二分法进行排序,不过这个方法large超时了,看了网上的发现还是用很土地方法用一个for循环从前两个开始merge到最后,不知道为什么自己把这个想这么复杂。
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 *merge(ListNode *p, ListNode *q) { 12 if (!p) return q; 13 if (!q) return p; 14 ListNode *ret = NULL; 15 ListNode *reti; 16 while (p && q) { 17 if (!ret) { 18 ret = new ListNode(min(p->val, q->val)); 19 reti = ret; 20 if (p->val < q->val) p = p->next; 21 else q = q->next; 22 } 23 else { 24 ListNode *tmp = new ListNode(min(p->val, q->val)); 25 ret->next = tmp; 26 ret = ret->next; 27 if (p->val < q->val) p = p->next; 28 else q = q->next; 29 } 30 } 31 if (!p) ret->next = q; 32 if (!q) ret->next = p; 33 return reti; 34 } 35 ListNode *mergeKLists(vector<ListNode *> &lists) { 36 // Start typing your C/C++ solution below 37 // DO NOT write int main() function 38 if (!lists.size()) return NULL; 39 ListNode *ret = lists[0]; 40 for (int i = 1; i < lists.size(); i++) ret = merge(ret, lists[i]); 41 return ret; 42 } 43 };
推荐下面这个更符合面试的代码
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 struct cmp { 10 bool operator()(ListNode *a, ListNode *b) { 11 return a->val > b->val; 12 } 13 }; 14 class Solution { 15 public: 16 ListNode *mergeKLists(vector<ListNode *> &lists) { 17 priority_queue<ListNode*, vector<ListNode*>, cmp> S; 18 if (lists.size() == 0) return NULL; 19 for (int i = 0; i < lists.size(); i++) { 20 if (lists[i]) S.push(lists[i]); 21 } 22 ListNode *ans = NULL; 23 ListNode *p = ans; 24 while (!S.empty()) { 25 ListNode *tmp = S.top(); 26 if (!ans) { 27 ans = tmp; 28 p = ans; 29 } 30 else { 31 p->next = tmp; 32 p = p->next; 33 } 34 if (!tmp->next) S.pop(); 35 else { 36 tmp = tmp->next; 37 S.pop(); 38 S.push(tmp); 39 } 40 } 41 return ans; 42 } 43 };
转载于:https://www.cnblogs.com/yingzhongwen/archive/2013/04/09/3010533.html
LeetCode: Merge k Sorted Lists相关推荐
- [leetcode] Merge k Sorted Lists
2019独角兽企业重金招聘Python工程师标准>>> Merge k sorted linked lists and return it as one sorted list. A ...
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...
- LeetCode Merge k Sorted Lists 解决报告
https://oj.leetcode.com/problems/merge-k-sorted-lists/ 归并K已经整理阵列,和分析算法的复杂. 解决报告:无论是不考虑优化,最简单的实现是要重新走 ...
- LeetCode Merge k Sorted Lists(有序单链表数组的合并)
题意:给出一个有序单链表数组,将其合并成一个有序单链表 思路:将其转化成两个单链表合并的问题,用递归方式来实现 代码如下: public class Solution {private ListNod ...
- LeetCode 之 JavaScript 解答第23题 —— 合并K个有序链表(Merge K Sorted Lists)
Time:2019/4/10 Title: Merge K Sorted Lists Difficulty: Difficulty Author: 小鹿 题目:Merge K Sorted Lists ...
- 21.Merge Two Sorted Lists 、23. Merge k Sorted Lists
21.Merge Two Sorted Lists 初始化一个指针作为开头,然后返回这个指针的next class Solution { public:ListNode* mergeTwoLists( ...
- 71. Merge k Sorted Lists
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- 【LeetCode】【数组归并】Merge k Sorted Lists
描述 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
- 合并k个有序链表 python_[LeetCode] 23. Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...
最新文章
- JQuery:JQuery 中的CSS()方法
- [20150601]模拟ora-00600[2608]错误.txt
- “throw”和“throw ex”之间有区别吗?
- 1026 Modular multiplication of polynomials
- 30个使用jQuery打造的世界级一流网站
- CF429E Points and Segments(欧拉回路)
- linux下反删除软件,浅谈Linux文件系统反删除方法(二)
- GitHub上严重匮乏!适合新手的C++项目,我在这里找到了!
- how to open files as sudo
- 数字信号处理matlab版答案,数字信号处理(MATLAB版)
- 产品读书《人类简史》
- html5ie11缩放,IE 11 页面缩放后再次打开不能保存之前的缩放比例
- 哈夫曼实现文件压缩解压缩(c语言)
- 数字图像处理 笔记--2
- 2018-2019赛季多校联合新生训练赛第四场 18-12-09
- Rhino6.9软件安装教程|兼容WIN10
- 安卓搭建虚拟服务器,安卓手机搭建云服务器
- 为服务器选择固态硬盘的一个优点和缺点
- YML(YAML)语法(文件后缀为.yml格式)
- 南邮——计算机图像学——光照、冯氏光照模型
热门文章
- WCF学习笔记之序列化
- oracle中sql语句的优化(转帖)
- VS2010 自动化整理代码(1)--- VS正则表达替换 PK Vim
- [导入]C#好书盘点【月儿原创】
- matlab光学毕业论文,光学信息处理实验的Matlab仿真.doc
- OpenGL 各类库的解析gl glu glut freeglut glfw glew
- golang mysql 崩溃_mysql连接问题,goruntime里执行总是出错,程序一直崩溃
- 从SVN迁移到Git(包括SVN历史纪录)【最系统的讲解】
- vue 父组件与子组件之间的传值(普通传值)
- java 获取 网卡名称_Java获取网卡信息详解