给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
类似于合并两个排序列表,但是此处需要用一个优先队列储存所有队列。
取出最小值放入结果列表尾部,并把其下一个位置放入队列。
class Solution { public ListNode mergeKLists(ListNode[] lists) { if(lists.length==0||lists==null){ return null; } ListNode pre=new ListNode(); ListNode head=pre; PriorityQueue<ListNode> p=new PriorityQueue(new Comparator<ListNode>(){ public int compare(ListNode t1,ListNode t2){ return t1.val-t2.val; } }); for(ListNode list:lists){ if(list!=null){ p.offer(list); } } while(!p.isEmpty()){ head.next=p.poll(); head=head.next; // 此处head.next相当于q.poll的后一个 如果为空则说明该链表已经空了 if(head.next!=null){ p.offer(head.next); } } return pre.next; } }