Merge k sorted list
public ListNode mergeKLists(ListNode[] lists) {
if(lists == null || lists.length == 0)
return null;
int k = lists.length;
Queue<ListNode> q = new PriorityQueue<ListNode>(k, new Comparator<ListNode>(){
public int compare(ListNode a, ListNode b){
return a.val - b.val;
}
});
for(ListNode e : lists){
if(e != null)
q.offer(e);
}
ListNode dummy = new ListNode(0);
ListNode cur = dummy;
while(!q.isEmpty()){
cur = cur.next = q.poll();
if(cur != null && cur.next != null){
q.offer(cur.next);
}
}
return dummy.next;
}Last updated