From 66c7ed0a71d38ba1d4477a0f726b56832979efc4 Mon Sep 17 00:00:00 2001 From: Dale Seo <5466341+DaleSeo@users.noreply.github.com> Date: Sat, 20 Jun 2026 21:40:33 -0400 Subject: [PATCH] top-k-frequent-elements --- top-k-frequent-elements/DaleSeo.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 top-k-frequent-elements/DaleSeo.rs diff --git a/top-k-frequent-elements/DaleSeo.rs b/top-k-frequent-elements/DaleSeo.rs new file mode 100644 index 000000000..b84b36910 --- /dev/null +++ b/top-k-frequent-elements/DaleSeo.rs @@ -0,0 +1,29 @@ +use std::collections::HashMap; + +// TC: O(n) +// SC: O(n) +impl Solution { + pub fn top_k_frequent(nums: Vec, k: i32) -> Vec { + let mut freqs = HashMap::new(); + for &num in &nums { + *freqs.entry(num).or_insert(0) += 1; + } + + let mut buckets = vec![Vec::new(); nums.len() + 1]; + for (num, freq) in freqs { + buckets[freq].push(num); + } + + let mut top_nums = Vec::new(); + for bucket in buckets.into_iter().rev() { + for num in bucket { + top_nums.push(num); + if top_nums.len() == k as usize { + return top_nums; + } + } + } + + top_nums + } +}