347. Top K Frequent Elements
숫자로 이루어진 배열 nums에서 가장 많이 등장하는 k개의 숫자를 반환하기
Algorithm Steps
- Create a frequency table
- Create a Max Heap and add all the distinct elements
- Poll top k frequent elements off the Heap
class Solution {
public List<Integer> topKFrequent(int[] nums, int k) {
Map<Integer, Integer> map = new HashMap<>();
for(int num : nums){ map.put(num, map.getOrDefault(num, 0) + 1); }
Queue<Integer> heap = new PriorityQueue<>((a, b) -> map.get(b) - map.get(a));
for(int key : map.keySet()){ heap.add(key); }
List<Integer> ans = new ArrayList<>();
for(int i = 0; i < k; i++){
ans.add(heap.poll());
}
return ans;
}
}