23Merge k Sorted Lists
来源:互联网 发布:移动端ui框架 知乎 编辑:程序博客网 时间:2024/06/11 06:37
题目链接:https://leetcode.com/problems/merge-k-sorted-lists/
题目:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
解题思路:
采用的数据结构是优先级队列。
将参加归并的每个链表的头结点都入队列,这样每次可以从队列中取出一个最小的结点放入新链表中,如果选中的结点的后继不为空,就让其后继入队列。
以前基本没怎么用过优先级队列,小小记录下。
优先级队列 PriorityQueue < T > 方法小结:
boolean add(E e)
Inserts the specified element into this priority queue.
E peek()
Retrieves, but does not remove, the head of this queue, or returns null if this queue is empty.
E poll()
Retrieves and removes the head of this queue, or returns null if this queue is empty.
优先级队列比较结点时采用 Comparator 接口的 compare(T o1, T o2) 方法实现。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode mergeKLists(ListNode[] lists) { if(lists == null || lists.length == 0) return null; PriorityQueue<ListNode> queue = new PriorityQueue(lists.length, new Comparator<ListNode>() { @Override public int compare(ListNode l1, ListNode l2) { return l1.val - l2.val; } }); for(int i = 0; i < lists.length; i ++) { if(lists[i] != null) queue.add(lists[i]); } ListNode res = new ListNode(0); ListNode p = res; while(!queue.isEmpty()) { ListNode tmp = queue.poll(); p.next = tmp; p = p.next; if(tmp.next != null) queue.add(tmp.next); } return res.next; }}
130 / 130 test cases passed.Status: AcceptedRuntime: 424 ms
0 0
- 23Merge k Sorted Lists
- #23 Merge k Sorted Lists
- 23Merge k Sorted Lists
- 【23】Merge k Sorted Lists
- 23-Merge k Sorted Lists
- 23 Merge k Sorted Lists
- Merge K Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge K Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- 虚拟机类加载机制
- UI 18 UICollectionView
- python - os模块中比较有用的部分
- NOIP2011 铺地毯 题解
- ActionBar简单使用——添加搜索按钮;让不同的Activity上显示不同的ActionBar;添加Tab标签;实现DrawerLayout并用ActionBarDrawerToggle控制
- 23Merge k Sorted Lists
- JVM性能调优
- leetcode 221: Maximal Square
- 名字的漂亮度
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- ZOJ 3430 Detect the Virus ac自动机 超级精简的转化
- systick介绍
- URAL 1017Staircases dp练习
- typedef和define的用法和区别