class Solution {
public ListNode mergeKLists(ListNode[] lists) {
ListNode result = null, tail = null;
PriorityQueue<ListNode> queue = new PriorityQueue<>(Comparator.comparingInt(x -> x.val));
for (ListNode node : lists) {
if (node == null) {
continue;
}
queue.add(node);
}
while (!queue.isEmpty()){
ListNode head = queue.poll();
if (head.next != null) {
queue.add(head.next);
}
head.next = null;
if (result == null){
tail = result = head;
} else {
tail.next = head;
tail = tail.next;
}
}
return result;
}
}