LeetCode-Merge k Sorted Lists

来源:互联网 发布:淘宝鹊桥活动怎么退出 编辑:程序博客网 时间:2024/06/18 11:55

min heap用priority que实现 注意判断list数组是否为空等 

这里的trick是pop一个node之后 不用想记录他是哪个list出来的 因为可以用next指针找到!!

public class Solution {    public ListNode mergeKLists(ListNode[] lists) {        ListNode node = null;        if ( lists == null || lists.length == 0 )            return node;        ListNode dummy = new ListNode ( 0 );        ListNode cur = dummy;        PriorityQueue<ListNode> que = new PriorityQueue<ListNode> ( lists.length, new Comparator<ListNode>(){            @Override            public int compare ( ListNode node1, ListNode node2 ){                return node1.val - node2.val;            }        });        for ( ListNode temp : lists ){            if ( temp != null )                que.add ( temp );        }        while ( !que.isEmpty() ){            ListNode temp = que.poll();            cur.next = temp;            cur = cur.next;            if ( cur.next != null )                que.add ( cur.next );        }        return dummy.next;    }}


0 0