请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

347

class A implements Comparator<Pair<Integer,Integer>>{
@Override
public int compare(Pair<Integer, Integer> o1, Pair<Integer, Integer> o2) {
//return o1.getKey()-o2.getKey();//对方法一
return o2.getKey()-o1.getKey();
}
}
老师,这个是我实现大顶堆的方法,可是下面的队列并没有使用大顶堆进行排序

List res=new ArrayList<>();
Map<Integer,Integer> map=new HashMap<>();
for(int i=0;i<nums.length;i++){
if(!map.containsKey(nums[i])){
map.put(nums[i],1);
}else{
map.put(nums[i],map.get(nums[i])+1);
}
}
PriorityQueue<Pair<Integer,Integer>> queue=new PriorityQueue<>(new A());
for(Map.Entry<Integer,Integer> entry:map.entrySet()){
if(map.keySet().size()k){
res.add(entry.getKey());
}else{
if(queue.size()(map.keySet().size()-k)){
if(entry.getValue()<queue.peek().getKey()){
queue.add(new Pair<>(entry.getValue(),entry.getKey()));
res.add(queue.peek().getValue());
queue.remove();
}
}
else{
queue.add(new Pair<>(entry.getValue(),entry.getKey()));
}
}
}
return res;

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2019-04-13 08:01:04

抱歉,请提供给我完整的,让我直接可以执行的代码,而不是代码片段。


请使用注释清晰的说明,在哪里,你认为输出应该是怎样的,实际是怎样的。谢谢。

0 回复 有任何疑惑可以回复我~

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信