www

导航

Top K Frequent Elements

public List<Integer> topKFrequent(int[] nums, int k){
        List<Integer> ret = new ArrayList<>();
        if (nums==null || nums.length<k) return ret;
        HashMap<Integer,Integer> map = new HashMap<>();
        for (int n:nums) map.put(n,map.getOrDefault(n,0)+1);
        PriorityQueue<Map.Entry<Integer,Integer>> maxHeap = new PriorityQueue<Map.Entry<Integer, Integer>>((o1, o2)->{
            if (o1.getValue().equals(o2.getValue())) return o2.getKey()-o1.getKey();
            return o2.getValue()-o1.getValue();
        });
        for (Map.Entry<Integer,Integer> entry:map.entrySet()) maxHeap.add(entry);
        while (ret.size()<k){
            ret.add(maxHeap.poll().getKey());
        }
        return ret;
    }

 

posted on 2019-02-25 18:23  www_practice  阅读(116)  评论(0编辑  收藏  举报