LeetCode 23 Merge k Sorted Lists
来源:互联网 发布:正规淘宝刷平台软件 编辑:程序博客网 时间:2024/04/28 19:57
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
思路就是,采用分治法,把有序链表逐渐分成左右两部分,将左右两部分再分治,最后左右两部分各自成为有序链表,再进行合并。
还有种思路是采用最小优先队列。由于效率也不高,所以这里也不晒代码了。
Runtime: 4 ms
public ListNode mergeKLists(ListNode[] lists) {if (lists.length == 0) return null;return mergeKLists(lists, 0, lists.length - 1);}public ListNode mergeKLists(ListNode[] lists, int l, int r) {if (l >= r) return lists[l];//if (l > r) return null;int mid = (r + l) / 2;return merge2Lists(mergeKLists(lists, l, mid), mergeKLists(lists, mid + 1, r));}public ListNode merge2Lists(ListNode l1, ListNode l2) {if (l1 == null) return l2;if (l2 == null) return l1;if (l1.val > l2.val) {l2.next = merge2Lists(l1, l2.next);return l2;} else {l1.next = merge2Lists(l1.next, l2);return l1;}}
public ListNode mergeKLists2(ListNode[] lists) {int len = lists.length;if (len == 0) return null;if (len == 1) return lists[0];int l1 = len / 2, l2 = len - l1;ListNode[] left = new ListNode[l1], right = new ListNode[l2];System.arraycopy(lists, 0, left, 0, l1);System.arraycopy(lists, l1, right, 0, l2);ListNode p1 = mergeKLists(left), p2 = mergeKLists(right);ListNode head = new ListNode(0), dummy = head;while (p1 != null && p2 != null) {if (p1.val <= p2.val) {head.next = p1;p1 = p1.next;} else {head.next = p2;p2 = p2.next;}head = head.next;}if (p1 != null) head.next = p1;if (p2 != null) head.next = p2;return dummy.next;}
0 0
- LeetCode(23)Merge K Sorted Lists
- [leetcode 23] Merge k Sorted Lists
- [leetcode]23 Merge k Sorted Lists
- [#23 leetcode]Merge k Sorted Lists
- LeetCode 23 Merge k Sorted Lists
- leetcode 23 Merge k Sorted Lists
- [Leetcode 23, Hard] Merge k Sorted Lists
- Leetcode 23 Merge k Sorted Lists
- LeetCode 23 - Merge k Sorted Lists
- LeetCode 23: Merge K Sorted Lists
- leetcode-23Merge k Sorted Lists
- leetcode 23: Merge k Sorted Lists
- Leetcode 23 Merge k Sorted Lists
- LeetCode-23 Merge k Sorted Lists
- LeetCode 23: Merge k Sorted Lists
- leetcode 23:Merge k Sorted Lists
- Leetcode #23 Merge k Sorted Lists
- LeetCode(23)Merge k Sorted Lists
- 【专题总结】背包问题(持续更新)
- 插入排序(C++实现)
- 【专题总结】树状数组和线段树(持续更新)
- Ubuntu 下Mysql server 远端访问
- [Dive into Python:第三章]内置数据类型
- LeetCode 23 Merge k Sorted Lists
- POJ1651-Multiplication Puzzle
- HDU 2955 Robberies 01背包 .
- 三个星期啦,总结一些
- 课时93 | 集合框架:Java如何用接口和类玩转数据结构(上)
- 分类的IP地址
- iOS总结1
- block的函数式编程和链式编程
- spring mvc 配置