import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param lists ListNode类ArrayList * @return ListNode类 */ public ListNode mergeKLists (ArrayList<ListNode> lists) { // write code here ListNode res = new ListNode(-1); PriorityQueue<ListNode> pq = new PriorityQueue<>((o1,o2)->o1.val-o2.val); for(ListNode n : lists) if(n!=null)pq.add(n); ListNode ptr = res; while(!pq.isEmpty()){ ListNode curNode = pq.poll(); ptr.next = curNode; ptr = ptr.next; if(curNode.next!=null) pq.add(curNode.next); } return res.next; } }