class Solution { public int[] topKFrequent(int[] nums, int k) { int[] ans = new int[k]; Map<Integer, Integer> map = new HashMap<>(); for (int num : nums) { if (!map.containsKey(num)) { map.put(num, 1); } else { map.put(num, map.get(num) + 1); } } PriorityQueue<Integer> minHeap = new PriorityQueue<>(new Comparator<Integer>(){ @Override public int compare(Integer o1, Integer o2) { return map.get(o1) - map.get(o2); } }); for (Integer key : map.keySet()) { minHeap.offer(key); if (minHeap.size() > k) minHeap.poll(); } for (int i = 0; i < k; i++) { ans[i] = minHeap.remove(); } return ans; }}