347.Top K Frequent Elements
1.Description(Medium)
2.Code
public List<Integer> topKFrequent(int[] nums, int k) {
List<Integer> result=new ArrayList<Integer>();
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
if(nums==null || nums.length==0 || k<1){
return result;
}
for(int i=0;i<nums.length;i++){
if(map.containsKey(nums[i])){
map.put(nums[i],map.get(nums[i])+1);
}else{
map.put(nums[i],1);
}
}
PriorityQueue<Map.Entry<Integer,Integer>> queue=new PriorityQueue<Map.Entry<Integer,Integer>>(k,
new Comparator<Map.Entry<Integer,Integer>>(){
public int compare(Map.Entry<Integer,Integer> a,Map.Entry<Integer,Integer> b){
return a.getValue()-b.getValue();
}
});
for(Map.Entry<Integer,Integer> entry:map.entrySet()){
if (queue.size() < k) {
queue.offer(entry);
} else if (queue.peek().getValue() < entry.getValue()) {
queue.poll();
queue.offer(entry);
}
}
for(Map.Entry<Integer,Integer> entry:queue){
result.add(entry.getKey());
}
return result;
}Last updated