@@ -0,0 +1,1446 @@
+package problems;%0A%0Aimport java.util.ArrayList;%0Aimport java.util.List;%0Aimport java.util.PriorityQueue;%0A%0Apublic class MergeKSortedLists %7B%0A%0A    public class ListNode %7B%0A        int val;%0A        ListNode next;%0A%0A        ListNode(int x) %7B%0A            val = x;%0A            next = null;%0A        %7D%0A    %7D%0A%0A    class Pair implements Comparable%3CPair%3E %7B%0A        ListNode node;%0A        int idx;%0A%0A        Pair(ListNode ln, int index) %7B%0A            node = ln;%0A            idx = index;%0A        %7D%0A%0A        public int compareTo(Pair p) %7B%0A            return node.val - p.node.val;%0A        %7D%0A    %7D%0A%0A    public ListNode mergeKLists(List%3CListNode%3E lists) %7B%0A        if (lists == null %7C%7C lists.size() == 0)%0A            return null;%0A%0A        ListNode head = null, p = null;%0A        PriorityQueue%3CPair%3E pq = new PriorityQueue%3CPair%3E();%0A        List%3CListNode%3E A = new ArrayList%3CListNode%3E(lists);%0A%0A        for (int i = 0; i %3C A.size(); i++) %7B%0A            if (A.get(i) != null)%0A                pq.add(new Pair(A.get(i), i));%0A        %7D%0A%0A        while (pq.size() %3E 0) %7B%0A            Pair t = pq.poll();%0A            if (head == null) %7B%0A                head = t.node;%0A                p = head;%0A            %7D else %7B%0A                p.next = t.node;%0A                p = p.next;%0A            %7D%0A            A.set(t.idx, A.get(t.idx).next);%0A            if (A.get(t.idx) != null) %7B%0A                pq.add(new Pair(A.get(t.idx), t.idx));%0A            %7D%0A        %7D%0A        return head;%0A    %7D%0A%7D%0A

Add Merge K Sorted Lists