LeetCode 23.Merge k Sorted List 合并k个有序链表(后补)
2018-02-26 16:46
465 查看
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
题目描述
讲k个有序链表合并为一个链表,并且保持有序状态。
思路1
将所有的链表的头结点放到最小堆里面,每提取一个结点,就将该结点的下一个结点放在堆里。
思路2
可以借鉴归并排序的思路,先将n个链表中一一合并为n/2个,再进行合并,一直合并到一个为止。
题目描述
讲k个有序链表合并为一个链表,并且保持有序状态。
思路1
将所有的链表的头结点放到最小堆里面,每提取一个结点,就将该结点的下一个结点放在堆里。
public class MergeKSortedList { public ListNode mergeKLists(ArrayList<ListNode> lists) { if ( lists.size()==0 || lists==null ) { return null; } else { PriorityQueue<ListNode> que = new PriorityQueue<>( lists.size(),new Comparator<ListNode>() { public int compare(ListNode o1, ListNode o2) { return o1.val-o2.val; } }); ListIterator<ListNode> it = lists.listIterator(); while ( it.hasNext() ) { ListNode temp = it.next(); if ( null!=temp ) { que.add(temp); } } ListNode root = que.poll(); // 有比较多的坑点 if ( root.next!=null ) { que.add(root.next); } ListNode head = root; while ( !que.isEmpty() ) { ListNode t = que.poll(); if( t.next!=null ) { que.add(t.next); } head.next = t; head = head.next; } return root; } } }
思路2
可以借鉴归并排序的思路,先将n个链表中一一合并为n/2个,再进行合并,一直合并到一个为止。
相关文章推荐
- Merge k Sorted Lists 合并k个有序链表@LeetCode
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
- [LeetCode23]Merge k Sorted Lists(合并k个有序链表)
- [LeetCode] 23. Merge k Sorted Lists 合并k个有序链表
- 合并K个有序链表(LeetCode:Merge k Sorted Lists)
- leetcode23 合并K个元素的有序链表
- LeetCode 23 Merge k Sorted Lists(合并k个有序链表)
- leetcode_效率题解_23. Merge k Sorted Lists(合并k个有序链表)
- leetcode解题之23.Merge k Sorted Lists Java版本(合并k个有序的链表)
- 算法导论第三版第六章 合并K个有序链表的三种解法(最小堆法和分治递归法)
- Merge Two Sorted Lists 合并两个有序链表@LeetCode
- [LeetCode-21] Merge Two Sorted Lists(合并两个有序链表)
- 算法导论第三版第六章 合并K个有序链表的三种解法(最小堆法和分治递归法)
- LeetCode基础-链表-合并两个有序链表
- Leetcode Merge k Sorted Lists 合并k个链表
- [LeetCode] 21. Merge Two Sorted Lists 合并有序链表
- LeetCode OJ 之 Merge k Sorted Lists(合并k个有序链表)
- 算法导论第三版第六章 合并K个有序链表的三种解法(最小堆法和分治递归法)
- [itint5]合并K个有序链表
- LeetCodet题解--23. Merge k Sorted Lists(合并K个已排序的链表)