Merge k Sorted Lists

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

题意:合并k个有序链表

代码

class Solution {
    public ListNode mergeKLists(ListNode[] lists) {
        // special case 
        if(lists.length==0) return null;
        // common case
        //1. priorityqueue ((o1,o2)-> o1.val, o2.val)
        PriorityQueue<ListNode> heap = new PriorityQueue<>((o1,o2)-> o1.val-o2.val);

        int size = lists.length;
        for(int i = 0; i<size; i++){
            if(lists[i]!=null){
                heap.add(lists[i]);  // add lists' head node  
            }
        }
        //2. create a new linkedlist
        ListNode fakeHead = new ListNode(-1);
        ListNode current = fakeHead;
        //3. add every node from priorityqueue's removing 

        while(heap.size()!=0){
            ListNode node = heap.remove();
            current.next = node;
            current=current.next;
            if(node.next!=null) heap.add(node.next);
        }

      return fakeHead.next;  
    }
}

results matching ""

    No results matching ""