BudiBadu Logo

Top K Frequent Elements

Hash Table Medium 1 views
Like0

Given an integer array nums and an integer k, return the k most frequent elements.

Use a hash map to count frequencies, then select the top k by frequency.

The output order can vary as long as the returned elements are the correct top-k set.

Algorithm Flow

Recommendation Algorithm Flow for Top K Frequent Elements - Budibadu
Recommendation Algorithm Flow for Top K Frequent Elements - Budibadu

Best Answers

java
import java.util.*;
class Solution {
    public int[] top_k_frequent_elements(int[] nums, int k) {
        Map<Integer, Integer> freq = new HashMap<>();
        for (int x : nums) freq.put(x, freq.getOrDefault(x, 0) + 1);
        List<Map.Entry<Integer, Integer>> arr = new ArrayList<>(freq.entrySet());
        arr.sort((a, b) -> b.getValue() - a.getValue());
        int[] res = new int[k];
        for (int i = 0; i < k; i++) res[i] = arr.get(i).getKey();
        return res;
    }
}