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

(java) Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

2014-07-15 23:05 483 查看
/**
* 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) {
ListNode head=new ListNode(-1);
ListNode tail=head;
if(lists.size()<=0) return null;
Comparator<ListNode> mycmp=new Comparator<ListNode>()
{
public int compare(ListNode l1,ListNode l2)
{
if(l1.val>l2.val) return 1;
else if(l1.val<l2.val)return -1;
return 0;

}

} ;

PriorityQueue<ListNode> prq=new PriorityQueue<ListNode>(lists.size(),mycmp);
for(ListNode n:lists)
{
if(n!=null)
{
prq.add(n);
}

}
while(prq.size()>0)
{
ListNode tem=prq.poll();
tail.next=tem;
tail=tail.next;
if(tem.next!=null)
{
prq.add(tem.next);
}

}

return head.next;

}
}


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