summaryrefslogtreecommitdiff
path: root/majority-element-ii/src
diff options
context:
space:
mode:
authorOrangerot <purple@orangerot.dev>2024-06-27 11:30:16 +0200
committerOrangerot <purple@orangerot.dev>2024-06-27 11:30:16 +0200
commit4b0a6a01b051a4ebfbc17661d14cb23fe4f275fb (patch)
tree0072cca328fe5adb2ed61004010228ff85e2164d /majority-element-ii/src
Initial commitHEADmain
Diffstat (limited to 'majority-element-ii/src')
-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()
+ }
+}