Merge K Sorted Lists

public class Solution {
    /**
     * @param lists: a list of ListNode
     * @return: The head of one sorted list.
     * 
    private Comparator<ListNode> ListNodecomparator = new Comparator<ListNode>(){
          public int compare(ListNode left, ListNode right){
               return left.val - right.val;
           }
       };*/
    public ListNode mergeKLists(List<ListNode> lists) {  
       
       Queue<ListNode> heap = new PriorityQueue<ListNode>(lists.size(), new Comparator<ListNode> () {
            @Override
            public int compare(ListNode n1, ListNode n2) {
                return Integer.compare(n1.val, n2.val);
            }
        });

        for(int i = 0; i < lists.size(); i++){
            if(lists.get(i) != null){
                heap.add(lists.get(i));
            }
        }
        ListNode dummy = new ListNode(0);
        ListNode point = dummy;
        while(!heap.isEmpty()){
            ListNode cur = heap.poll();
            point.next =  cur;
            point = point.next;
            if(cur.next != null){
             heap.add(cur.next);   
            }
        }
        return dummy.next;
    }
}

最后更新于

这有帮助吗?