Top K Frequent Elements

给一个数组, 返回前k个高频数字.

public class Solution {
    public List<Integer> topKFrequent(int[] nums, int k) {
        Map<Integer, Integer> map = new HashMap<>();
        for(int i : nums){
            if(map.containsKey(i))
                map.put(i,map.get(i)+1);
            else
                map.put(i,0);
        }
        PriorityQueue<Map.Entry<Integer,Integer>> pq = new PriorityQueue<>((a, b) -> a.getValue()-b.getValue());
        for(Map.Entry<Integer,Integer> e : map.entrySet()){
            pq.add(e);
            if(pq.size()>k)
                pq.poll();
        }
        List<Integer> res = new ArrayList<Integer>();
        while(!pq.isEmpty()){
            res.add(pq.poll().getKey());
        }
        return res;
    }
}