Skip to main content
Back to problems
#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)
LeetCode
solution.rs
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
  }
}