347. Top K Frequent Elements

숫자로 이루어진 배열 nums에서 가장 많이 등장하는 k개의 숫자를 반환하기

Algorithm Steps

  1. Create a frequency table
  2. Create a Max Heap and add all the distinct elements
  3. 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;
    }
}