https://leetcode-cn.com/problems/top-k-frequent-elements/
[brainstorm]
1 top k freq item, so there is order here.
2 instead of N item, only K item, sort vs heap
3 sort on count, but return number, how to get number by count?
[bug]
for(int i=0;i<heap.size();i++){
ret[i] = heap.poll().getKey();
}
[code]
class Solution {
public int[] topKFrequent(int[] nums, int k) {
PriorityQueue<Map.Entry<Integer, Integer>> heap = new PriorityQueue<>(
(e1, e2)->{
return e1.getValue() - e2.getValue();
}
);
//key number, value count
Map<Integer, Integer> map = new HashMap<>();
for(int i=0;i<nums.length;i++){
int num = nums[i];
if(!map.containsKey(num)){
map.put(num, 0);
}
map.put(num, map.get(num)+1);
}
for(Map.Entry<Integer, Integer> e: map.entrySet()){
heap.add(e);
if(heap.size()==k+1){
heap.poll();
}
}
int[] ret = new int[k];
int i=0;
while(i<k){
ret[i] = heap.poll().getKey();
i++;
}
return ret;
}
}