合并k个排序的列表 Merge k Sorted Lists
Posted hyserendipity
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并k个排序的列表 Merge k Sorted Lists相关的知识,希望对你有一定的参考价值。
2018-11-25 22:58:52
问题描述:
问题求解:
本题可以使用优先队列高效的进行求解,整体的时间复杂度为O(nlogk)。
public ListNode mergeKLists(ListNode[] lists) { ListNode dummy = new ListNode(-1); ListNode prev = dummy; int k = lists.length; PriorityQueue<ListNode> pq = new PriorityQueue<>(new Comparator<ListNode>() { @Override public int compare(ListNode o1, ListNode o2) { return o1.val - o2.val; } }); for (int i = 0; i < k; i++) if (lists[i] != null) pq.add(lists[i]); while (!pq.isEmpty()) { ListNode curNode = pq.poll(); prev.next = curNode; prev = prev.next; if (curNode.next != null) pq.add(curNode.next); } return dummy.next; }
以上是关于合并k个排序的列表 Merge k Sorted Lists的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode]23. Merge k Sorted Lists合并K个排序链表
[Leetcode] Merge k sorted lists 合并k个已排序的链表