summaryrefslogtreecommitdiff
path: root/majority-element-ii
diff options
context:
space:
mode:
Diffstat (limited to 'majority-element-ii')
-rw-r--r--majority-element-ii/Cargo.toml8
-rw-r--r--majority-element-ii/src/main.rs28
2 files changed, 36 insertions, 0 deletions
diff --git a/majority-element-ii/Cargo.toml b/majority-element-ii/Cargo.toml
new file mode 100644
index 0000000..71a2fbe
--- /dev/null
+++ b/majority-element-ii/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "majority-element-ii"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
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()
+ }
+}