leetcode Merge k Sorted Lists

来源:互联网 发布:mac系统游戏 编辑:程序博客网 时间:2024/06/10 19:41

题目:

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

解题思路:

利用一个优先队列实现程序的模拟,优先队列根据ListNode的val值大小进行排序。

代码:

public ListNode mergeKLists(ArrayList<ListNode> lists) {        if (lists == null || lists.size() == 0)            return null;        PriorityQueue<ListNode> pq = new PriorityQueue<ListNode>(lists.size(), new Comparator<ListNode>() {//优队列的大小为待比较的链表数目            @Override            public int compare(ListNode listNode1, ListNode listNode2) {                return listNode1.val - listNode2.val;            }        });        for (ListNode listNode : lists) {            if (listNode != null)                pq.add(listNode);        }        ListNode res = new ListNode(0);        ListNode ptr = res;        while (!pq.isEmpty()) {            ListNode listNode = pq.poll();            if (listNode.next != null)                pq.add(listNode.next);            ptr.next = listNode;            ptr = ptr.next;        }        return res.next;    }

参考链接:

http://blog.sina.com.cn/leetcode

0 0
原创粉丝点击