/**
* 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) {
int n=lists.length;
ListNode result=new ListNode(Integer.MAX_VALUE);
ListNode pointer=result;
int nullListCount=0;
boolean isNull[]=new boolean[n];
Comparator<record> OrderIsdn=new Comparator<record>() {
public int compare(record o1, record o2) {
// TODO Auto-generated method stub
int numbera = o1.value;
int numberb = o2.value;
if(numberb < numbera)
{
return 1;
}
else if(numberb>numbera)
{
return -1;
}
else
{
return 0;
}
}
};
PriorityQueue<record> priorityQueue=new PriorityQueue<Solution.record>(OrderIsdn);
for(int i=0;i<n;i++)
{
if(lists[i]==null)
{
isNull[i]=true;
nullListCount++;
}
else
{
priorityQueue.add(new record(lists[i].val,i));
}
}
while(nullListCount!=n)
{
record aRecord=priorityQueue.poll();
int Min=aRecord.value;
int MinIndex=aRecord.index;
pointer.next=new ListNode(Min);
pointer=pointer.next;
lists[MinIndex]=lists[MinIndex].next;
if(lists[MinIndex]==null)
{
isNull[MinIndex]=true;
nullListCount++;
}
else
{
priorityQueue.add(new record(lists[MinIndex].val, MinIndex));
}
}
return result.next;
}
class record
{
int index;
int value;
record(int value,int index)
{
this.index=index;
this.value=value;
}
}
}
leetcode Merge k Sorted Lists
最新推荐文章于 2024-04-03 21:24:25 发布
本文详细解析了如何使用优先队列实现合并K个排序链表的算法,并通过示例代码展示了其实现过程。
263

被折叠的 条评论
为什么被折叠?



