标签:leetcode
https://oj.leetcode.com/problems/merge-k-sorted-lists/
http://fisherlei.blogspot.com/2012/12/leetcode-merge-k-sorted-lists.html
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode mergeKLists(List<ListNode> lists) {
if (lists == null || lists.isEmpty())
return null;
// 如果不使用heap,需要定义一个函数找出最小node
//
// Define a min heap
PriorityQueue<ListNode> heap = new PriorityQueue<ListNode>(lists.size(),
new Comparator<ListNode>()
{
public int compare(ListNode a, ListNode b)
{
return Integer.compare(a.val, b.val);
}
});
// Build the min heap
for (ListNode node : lists)
{
if (node != null)
{
heap.offer(node);
}
}
ListNode head = null;
ListNode tail = null;
while (!heap.isEmpty())
{
ListNode node = heap.poll();
if (head == null)
head = node;
if (tail != null)
tail.next = node;
tail = node;
ListNode nextnode = node.next;
if (nextnode != null)
heap.offer(nextnode);
}
return head;
}
}[LeetCode]23 Merge k Sorted Lists
标签:leetcode
原文地址:http://7371901.blog.51cto.com/7361901/1598422