AlgoMaster Logo

Top K Frequent Elements

nums=[1, 1, 1, 2, 2, 3],k=2
1public int[] topKFrequent(int[] nums, int k) {
2    // Frequency mapping
3    HashMap<Integer, Integer> freqMap = new HashMap<>();
4    for (int num : nums) {
5        freqMap.put(num, freqMap.getOrDefault(num, 0) + 1);
6    }
7
8    // Min-Heap to maintain top k elements
9    PriorityQueue<Map.Entry<Integer, Integer>> minHeap =
10        new PriorityQueue<>((a, b) -> a.getValue().compareTo(b.getValue()));
11
12    for (Map.Entry<Integer, Integer> entry : freqMap.entrySet()) {
13        minHeap.add(entry);
14        if (minHeap.size() > k) {
15            minHeap.poll();
16        }
17    }
18
19    // Extracting elements from heap
20    int[] topK = new int[k];
21    for (int i = 0; i < k; i++) {
22        topK[i] = minHeap.poll().getKey();
23    }
24    return topK;
25}
0 / 16
Input Array:111223Min-Heap (size ≤ k):(empty)