堆排序合并几个已经排序好的链表
2017-11-01 22:22
218 查看
import java.util.ArrayList;
import java.util.Comparator;
import java.util.PriorityQueue;
public class MergeKList {
static class ListNode{
int value;
ListNode next;
ListNode(int value)
{
this.value=value;
}
}
public void mergeKLists(ArrayList<ListNode> lists){
PriorityQueue<ListNode> q=new PriorityQueue<ListNode>(lists.size(),new Comparator<ListNode>(){
public int compare(ListNode a,ListNode b){
return a.value-b.value;
}
});
for(ListNode list:lists)
{
q.add(list);
}
while(q.size()>0){
ListNode temp = q.poll();
System.out.println(temp.value);
if(temp.next!=null)
q.add(temp.next);
}
}
public static void main(String []args){
ListNode h1 = new ListNode(3);
h1.next=new ListNode(5);
h1.next.next=new ListNode(8);
ListNode h2 = new ListNode(2);
h2.next=new ListNode(4);
h2.next.next=new ListNode(9);
ListNode h3 = new ListNode(4);
h3.next=new ListNode(5);
ListNode h4 =new ListNode(5);
ArrayList<ListNode> lists = new ArrayList();
lists.add(h1);
lists.add(h2);
lists.add(h3);
lists.add(h4);
new MergeKList().mergeKLists(lists);
}
}
import java.util.Comparator;
import java.util.PriorityQueue;
public class MergeKList {
static class ListNode{
int value;
ListNode next;
ListNode(int value)
{
this.value=value;
}
}
public void mergeKLists(ArrayList<ListNode> lists){
PriorityQueue<ListNode> q=new PriorityQueue<ListNode>(lists.size(),new Comparator<ListNode>(){
public int compare(ListNode a,ListNode b){
return a.value-b.value;
}
});
for(ListNode list:lists)
{
q.add(list);
}
while(q.size()>0){
ListNode temp = q.poll();
System.out.println(temp.value);
if(temp.next!=null)
q.add(temp.next);
}
}
public static void main(String []args){
ListNode h1 = new ListNode(3);
h1.next=new ListNode(5);
h1.next.next=new ListNode(8);
ListNode h2 = new ListNode(2);
h2.next=new ListNode(4);
h2.next.next=new ListNode(9);
ListNode h3 = new ListNode(4);
h3.next=new ListNode(5);
ListNode h4 =new ListNode(5);
ArrayList<ListNode> lists = new ArrayList();
lists.add(h1);
lists.add(h2);
lists.add(h3);
lists.add(h4);
new MergeKList().mergeKLists(lists);
}
}
相关文章推荐
- leetcode合并两个已经排序的链表
- 合并两个已经排序的链表
- Microsoft100——005.合并两个已经排序好的链表
- Leetcode 21:Merge Two Sorted Lists(golang实现合并两条已经排序的链表)
- C++实现两个已经排序的链表进行合并
- 合并两个已经排序好的链表
- C++实现两个已经排序的链表进行合并
- 合并两个已经排序的链表
- 面试题 17:合并两个排序的链表
- 合并俩个已排序的链表
- 题目1519:合并两个排序的链表
- 剑指 offer:合并两个排序的链表
- 合并两个排序的链表
- 面试题17:合并两个排序的链表
- LintCode 合并两个排序链表
- 合并两个排序链表
- 将两个已排序的链表合并
- 合并两个排序的链表
- 剑指offer-合并两个排序的链表
- 剑指offer_16_合并两个排序的链表