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}