Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- class Solution {
- public int[] topKFrequent(int[] nums, int k) {
- // Count frequency of each element
- Map<Integer, Integer> freq = new HashMap<>();
- for (int num : nums) {
- freq.put(num, freq.getOrDefault(num, 0) + 1);
- }
- // Create a list of frequency buckets
- List<Integer>[] buckets = new ArrayList[nums.length + 1];
- for (int num : freq.keySet()) {
- int count = freq.get(num);
- if (buckets[count] == null) {
- buckets[count] = new ArrayList<>();
- }
- buckets[count].add(num);
- }
- // Extract top k elements from frequency buckets
- int[] result = new int[k];
- int index = 0;
- for (int i = buckets.length - 1; i >= 0 && index < k; i--) {
- if (buckets[i] != null) {
- for (int num : buckets[i]) {
- result[index++] = num;
- if (index == k) {
- break;
- }
- }
- }
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment