#347
Medium Algorithms Top k frequent elements
Array Hash Table Divide and Conquer Sorting Heap (Priority Queue) Bucket Sort Counting Quickselect
65.9% acceptance
Jan 12, 2026
19337
852
Given an integer array nums and an integer k, return the k most frequent elements. You may return the answer in any order.
Solution
Rust
Time O(n²)
Space O(n)
impl Solution {
pub fn top_k_frequent(nums: Vec<i32>, k: i32) -> Vec<i32> {
let mut freq = std::collections::HashMap::new();
for num in nums.iter() {
*freq.entry(*num).or_insert(0) += 1;
}
let mut buckets: Vec<Vec<i32>> = vec![Vec::new(); nums.len() + 1];
for (num, count) in freq {
buckets[count].push(num);
}
let mut result = Vec::new();
for bucket in buckets.iter().rev() {
for &num in bucket {
result.push(num);
if result.len() == k as usize {
return result;
}
}
}
result
}
}