Merge K sorted list
public class Solution {
private static final Comparator<ListNode> listComparator = new Comparator<ListNode>() {
@Override
public int compare(ListNode o1, ListNode o2) {
return o1.val - o2.val;
}
};
public ListNode mergeKLists(List<ListNode> lists) {
if (lists == null || lists.isEmpty()) return null;
Queue<ListNode> queue = new PriorityQueue(lists.size(), listComparator);
for (ListNode node : lists) {
if (node != null)
queue.add(node);
}
ListNode dummyHead = new ListNode(0);
ListNode p = dummyHead;
while (!queue.isEmpty()) {
ListNode node = queue.poll();
p.next = node;
p = p.next;
if (node.next != null) {
queue.add(node.next);
}
}
return dummyHead.next;
}
}