Merge K Sorted Lists
public class Solution {
/**
* @param lists: a list of ListNode
* @return: The head of one sorted list.
*
private Comparator<ListNode> ListNodecomparator = new Comparator<ListNode>(){
public int compare(ListNode left, ListNode right){
return left.val - right.val;
}
};*/
public ListNode mergeKLists(List<ListNode> lists) {
Queue<ListNode> heap = new PriorityQueue<ListNode>(lists.size(), new Comparator<ListNode> () {
@Override
public int compare(ListNode n1, ListNode n2) {
return Integer.compare(n1.val, n2.val);
}
});
for(int i = 0; i < lists.size(); i++){
if(lists.get(i) != null){
heap.add(lists.get(i));
}
}
ListNode dummy = new ListNode(0);
ListNode point = dummy;
while(!heap.isEmpty()){
ListNode cur = heap.poll();
point.next = cur;
point = point.next;
if(cur.next != null){
heap.add(cur.next);
}
}
return dummy.next;
}
}
最后更新于
这有帮助吗?