您的位置:首页 > 编程语言 > Java开发

LeetCode23 – Merge k Sorted Lists (Java)

2016-08-31 22:15 120 查看
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

Analysis

The simplest solution is using PriorityQueue. The elements of the priority queue are ordered according to their natural ordering, or by a comparator provided at the construction time (in this case).

Java Solution

public ListNode mergeKLists(ListNode[] lists) {
if(lists==null||lists.length==0)
return null;

PriorityQueue<ListNode> queue = new PriorityQueue<ListNode>(new Comparator<ListNode>(){
public int compare(ListNode l1, ListNode l2){
return l1.val - l2.val;
}
});

ListNode head = new ListNode(0);
ListNode p = head;

for(ListNode list: lists){
if(list!=null)
queue.offer(list);
}

while(!queue.isEmpty()){
ListNode n = queue.poll();
p.next = n;
p=p.next;

if(n.next!=null)
queue.offer(n.next);
}

return head.next;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: