码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]23 Merge k Sorted Lists

时间:2015-01-02 16:11:43      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:leetcode

https://oj.leetcode.com/problems/merge-k-sorted-lists/

http://fisherlei.blogspot.com/2012/12/leetcode-merge-k-sorted-lists.html

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode mergeKLists(List<ListNode> lists) {
        
        if (lists == null || lists.isEmpty())
            return null;

        // 如果不使用heap,需要定义一个函数找出最小node
        //
        // Define a min heap
        PriorityQueue<ListNode> heap = new PriorityQueue<ListNode>(lists.size(), 
        new Comparator<ListNode>()
        {
            public int compare(ListNode a, ListNode b)
            {
                return Integer.compare(a.val, b.val);
            }
        });
        
        // Build the min heap
        for (ListNode node : lists)
        {
            if (node != null)
            {
                heap.offer(node);
            }
        }
        
        ListNode head = null;
        ListNode tail = null;
        while (!heap.isEmpty())
        {
            ListNode node = heap.poll();

            if (head == null)
                head = node;
                
            if (tail != null)
                tail.next = node;
            tail = node;
            
            ListNode nextnode = node.next;
            if (nextnode != null)
                heap.offer(nextnode);
        }
        
        return head;
    }
}


[LeetCode]23 Merge k Sorted Lists

标签:leetcode

原文地址:http://7371901.blog.51cto.com/7361901/1598422

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!