[Leetcode] Merge k Sorted Lists (Java)
2013-12-26 17:03
465 查看
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
就用了最普通的merge sort 用了k-1次,复杂度为O(n*k2)
如果k很大,k个链表一起用对最小堆会快一些,复杂度为O(k*logk*n),写起来比较麻烦,不写了
linked lists and return it as one sorted list. Analyze and describe its complexity.
就用了最普通的merge sort 用了k-1次,复杂度为O(n*k2)
import java.util.ArrayList; public class MergekSortedLists { static class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; } } public ListNode mergeKLists(ArrayList<ListNode> lists) { if(lists.isEmpty()) return null; ListNode temp = lists.get(0); ListNode res = new ListNode(-1); res.next = temp; ListNode index = res; for(int i=1;i<lists.size();i++) { ListNode t = lists.get(i); while(temp!=null&&t!=null){ if(temp.val<t.val){ ListNode tt = new ListNode(temp.val); index.next = tt; index = tt; temp = temp.next; }else { ListNode tt = new ListNode(t.val); index.next = tt; index = tt; t = t.next; } } while(temp!=null){ ListNode tt = new ListNode(temp.val); index.next = tt; index = tt; temp = temp.next; } while(t!=null) { ListNode tt = new ListNode(t.val); index.next = tt; index = tt; t = t.next; } temp = res.next; index = res; } return res.next; } public static void main(String[] args) { ArrayList<ListNode> lists = new ArrayList<ListNode>(); lists.add(new ListNode(1)); System.out.println(new MergekSortedLists().mergeKLists(lists).val); } }
如果k很大,k个链表一起用对最小堆会快一些,复杂度为O(k*logk*n),写起来比较麻烦,不写了
相关文章推荐
- 【LeetCode刷题】排列两个有序链表Merge Two Sorted Lists(递归思想)(java)
- (Java)LeetCode-21. Merge Two Sorted Lists
- Java for LeetCode 023 Merge k Sorted Lists
- Merge k Sorted Lists leetcode java
- leetcode:Merge k Sorted Lists 【Java】
- leetcode Merge Two Sorted Lists(Java)
- [Leetcode][JAVA] Merge Two Sorted Lists & Sort List
- LeetCode : Merge Two Sorted Lists [java]
- Merge Two Sorted Lists leetcode java
- 【LeetCode-面试算法经典-Java实现】【021-Merge Two Sorted Lists(合并两个排好序的单链表)】
- Merge k Sorted Lists leetcode java
- leetcode 第21题<Merge Two Sorted Lists>(java)
- LeetCode 23. Merge k Sorted Lists(java)
- Merge Two Sorted Lists leetcode java
- (Java)LeetCode-23. Merge k Sorted Lists
- 【LeetCode】Merge Two Sorted Lists 解题报告(Java & Python)
- Leetcode:21. Merge Two Sorted Lists(JAVA)
- 【LeetCode-面试算法经典-Java实现】【023-Merge k Sorted Lists(合并k个排好的的单链表)】
- 【Leetcode】Merge Two Sorted Lists in JAVA
- Java [leetcode 21]Merge Two Sorted Lists