summaryrefslogtreecommitdiff
path: root/majority-element-ii/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'majority-element-ii/src/main.rs')
-rw-r--r--majority-element-ii/src/main.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/majority-element-ii/src/main.rs b/majority-element-ii/src/main.rs
new file mode 100644
index 0000000..34872a4
--- /dev/null
+++ b/majority-element-ii/src/main.rs
@@ -0,0 +1,28 @@
+fn main() {
+ println!("Hello, world!");
+ let tests = [
+ vec![3,2,3],
+ vec![1],
+ vec![1,2]
+ ];
+
+ for test in tests {
+ let result = Solution::majority_element(test.clone());
+ println!("{test:?} is {result:?}");
+ }
+}
+
+struct Solution;
+
+use std::collections::HashMap;
+
+impl Solution {
+ pub fn majority_element(nums: Vec<i32>) -> Vec<i32> {
+ let mut occurance: HashMap<&i32, i32> = HashMap::new();
+
+ for num in &nums {
+ occurance.entry(num).and_modify(|x| {*x += 1}).or_insert(0);
+ }
+ occurance.iter().filter(|(_, &occ)| occ >= nums.len() as i32 / 3).map(|(&&num,_)| num).collect()
+ }
+}