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) 编辑 收藏 举报