优先队列

public ListNode mergeKLists(ListNode[] lists) {if(lists==null||lists.length==0)return null;PriorityQueue<ListNode> queue = new PriorityQueue<ListNode>(lists.length,new Comparator<ListNode>(){@Overridepublic int compare(ListNode o1,ListNode o2){if(o1.val<o2.val)return -1;else if(o1.val==o2.val)return 0;elsereturn 1;}});ListNode dummy = new ListNode(0);ListNode tail = dummy;for(ListNode node:lists)if(node!=null)queue.add(node);while(!queue.isEmpty()){tail.next = queue.poll();tail = tail.next;if(tail.next!=null)queue.add(tail.next);}return dummy.next;}
