1 /**
2 * Definition for singly-linked list.
3 * public class ListNode {
4 * int val;
5 * ListNode next;
6 * ListNode(int x) {
7 * val = x;
8 * next = null;
9 * }
10 * }
11 */
12 public class Solution {
13 public ListNode mergeKLists(List<ListNode> lists) {
14 ListNode head=new ListNode(-1);
15 ListNode tail=head;
16 if(lists.size()<=0) return null;
17 Comparator<ListNode> mycmp=new Comparator<ListNode>()
18 {
19 public int compare(ListNode l1,ListNode l2)
20 {
21 if(l1.val>l2.val) return 1;
22 else if(l1.val<l2.val)return -1;
23 return 0;
24
25
26
27 }
28
29 } ;
30
31 PriorityQueue<ListNode> prq=new PriorityQueue<ListNode>(lists.size(),mycmp);
32 for(ListNode n:lists)
33 {
34 if(n!=null)
35 {
36 prq.add(n);
37 }
38
39 }
40 while(prq.size()>0)
41 {
42 ListNode tem=prq.poll();
43 tail.next=tem;
44 tail=tail.next;
45 if(tem.next!=null)
46 {
47 prq.add(tem.next);
48 }
49
50
51 }
52
53 return head.next;
54
55
56
57
58
59 }
60 }