Hard-题目31:23. Merge k Sorted Lists

转载 2016年05月31日 23:42:58

题目原文:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
题目大意:
把K个有序链表合并。
题目分析:
用一个重写比较器的优先队列,保证每次出队的都是最小的节点。
源码:(language:java)

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode mergeKLists(ListNode[] lists) {
        if (lists==null||lists.length==0) return null;

        PriorityQueue<ListNode> queue= new PriorityQueue<ListNode>(lists.length,new Comparator<ListNode>(){
            @Override
            public int compare(ListNode o1,ListNode o2){
                if (o1.val<o2.val)
                    return -1;
                else if (o1.val==o2.val)
                    return 0;
                else 
                    return 1;
            }
        });

        ListNode dummy = new ListNode(0);
        ListNode tail=dummy;

        for (ListNode node:lists)
            if (node!=null)
                queue.add(node);

        while (!queue.isEmpty()){
            tail.next=queue.poll();
            tail=tail.next;

            if (tail.next!=null)
                queue.add(tail.next);
        }
        return dummy.next;
    }
}

成绩:
15ms,6.55%,4ms,17.34%
cmershen的碎碎念:
其实较好的办法是归并排序,但我不会写。。。
大概看了一下jdk源码,PriorityQueue的底层好像是Heap……

LeetCode 23 Merge k Sorted Lists(合并K个已排序链表)

翻译合并K个已排序的链表,并且将其排序并返回。 分析和描述其复杂性。原文Merge k sorted linked lists and return it as one sorted list. An...
  • NoMasp
  • NoMasp
  • 2015年11月12日 17:30
  • 3400

【LeetCode】23. Merge k Sorted Lists 基于Java的解法

23. Merge k Sorted Lists Total Accepted: 88102 Total Submissions: 372066 Difficulty: Hard Merge k...
  • Jin_Kwok
  • Jin_Kwok
  • 2016年06月04日 00:46
  • 1576

[Leetcode]23. Merge k Sorted Lists @python

题目Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity....
  • qian2729
  • qian2729
  • 2016年01月16日 15:32
  • 547

LeetCode(23)Merge K Sorted Lists

题目如下: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complex...
  • feliciafay
  • feliciafay
  • 2013年12月21日 16:27
  • 4168

LeetCode 23: Merge K Sorted Lists

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. ...
  • sunao2002002
  • sunao2002002
  • 2015年05月31日 02:04
  • 3439

[LeetCode] 023. Merge k Sorted Lists (Hard) (C++/Java/Python)

[LeetCode] 023. Merge k Sorted Lists (Hard) (C++/Java/Python)
  • hcbbt
  • hcbbt
  • 2015年03月05日 11:19
  • 2554

LeetCode-23-Merge-k-Sorted-Lists Python倒循环

这个题本来应该用类似归并排序的思想的,然而我直接暴力了一发就过了。。。不明觉厉 # Definition for singly-linked list. # class ListNode(object...
  • qdbszsj
  • qdbszsj
  • 2017年09月11日 13:50
  • 259

LeetCode 23 Merge k Sorted Lists (C,C++,Java,Python)

Problem: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its c...
  • runningtortoises
  • runningtortoises
  • 2015年05月11日 15:39
  • 1014

Merge k Sorted Lists -- LeetCode

原题链接: http://oj.leetcode.com/problems/merge-k-sorted-lists/  这道题目在分布式系统中非常常见,来自不同client的sorted list要...
  • linhuanmars
  • linhuanmars
  • 2014年02月25日 09:45
  • 26111

LeetCode Merge k Sorted Lists 解题报告

合并K个已排序的数组,并分析整个算法的复杂度。 最朴素的方法TLE,借鉴归并排序的算法顺利AC,算法时间复杂度:NlogK...
  • worldwindjp
  • worldwindjp
  • 2014年10月11日 15:23
  • 8274
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hard-题目31:23. Merge k Sorted Lists
举报原因:
原因补充:

(最多只允许输入30个字)