【LeetCode算法练习(C++)】Merge k Sorted Lists
来源:互联网 发布:matlab创建三维数组 编辑:程序博客网 时间:2024/05/17 04:12
题目:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
链接:Merge k Sorted Lists
解法:递归实现归并,利用merge Two Lists,每次合并两个序列。时间O(nlogn)
class Solution {public: ListNode* mergeKLists(vector<ListNode*>& lists) { if (lists.size() == 0) return NULL; else return VmergeKLists(lists)[0]; } vector<ListNode*> VmergeKLists(vector<ListNode*>& lists) { vector<ListNode*> res; if (lists.size() == 1) return lists; else if (lists.size() == 2) { res.push_back(mergeTwoLists(lists[0], lists[1])); return res; } else { vector<ListNode*> vl; for (int i = 1; i < lists.size(); i += 2) { vl.push_back(mergeTwoLists(lists[i - 1], lists[i])); } if (lists.size() % 2) vl.push_back(lists[lists.size() - 1]); return VmergeKLists(vl); } } ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *head = new ListNode(0); head->next = NULL; ListNode *p = head; while (l1 || l2) { ListNode *tmp = new ListNode(0); tmp->next = NULL; if (!l1 && l2) { tmp->val = l2->val; l2 = l2->next; } else if (!l2 && l1) { tmp->val = l1->val; l1 = l1->next; } else if (l1->val > l2->val) { tmp->val = l2->val; l2 = l2->next; } else { tmp->val = l1->val; l1 = l1->next; } p->next = tmp; p = p->next; } p = head; head = head->next; p->next = NULL; delete(p); return head; }};
Runtime: 32 ms
阅读全文
0 0
- 【LeetCode算法练习(C++)】Merge k Sorted Lists
- 【LeetCode算法练习(C++)】Merge Two Sorted Lists
- 算法练习(10):Merge k Sorted Lists
- LeetCode算法题目:Merge k Sorted Lists
- 每周LeetCode算法题(四):Merge k Sorted Lists
- LeetCode(23)Merge k Sorted Lists
- LeetCode: Merge k Sorted Lists
- LeetCode Merge k Sorted Lists
- LeetCode: Merge k Sorted Lists
- [Leetcode] Merge k Sorted Lists
- [Leetcode] Merge k Sorted Lists
- [Leetcode] Merge K sorted lists
- [LeetCode]Merge k Sorted Lists
- [LeetCode] Merge k Sorted Lists
- LeetCode-Merge k Sorted Lists
- LeetCode: Merge k Sorted Lists
- LeetCode - Merge k Sorted Lists
- LeetCode | Merge k Sorted Lists
- 树莓派修改镜像源
- 网站制作原理
- java基础知识巩固(继承、构造方法)
- ES6转换成ES5/ES3
- 根据输入框EditText是否有内容来对按钮的点击权限控制
- 【LeetCode算法练习(C++)】Merge k Sorted Lists
- Android Studio 按下Ctrl + 鼠标滚动 缩放编辑文本的大小
- location.href
- jvm优化—— 图解垃圾回收
- Servlet监听器
- jquery mobile 中button去掉点击时候的阴影
- 在VMware虚拟机下安装Android Studio(AS)以及运行第一个HelloWorld程序
- 获取scrollTop兼容各浏览器的方法,以及body和documentElement是啥?
- disruptor学习