diff options
| author | Orangerot <purple@orangerot.dev> | 2024-06-27 11:30:16 +0200 | 
|---|---|---|
| committer | Orangerot <purple@orangerot.dev> | 2024-06-27 11:30:16 +0200 | 
| commit | 4b0a6a01b051a4ebfbc17661d14cb23fe4f275fb (patch) | |
| tree | 0072cca328fe5adb2ed61004010228ff85e2164d /majority-element-ii/src | |
Diffstat (limited to 'majority-element-ii/src')
| -rw-r--r-- | majority-element-ii/src/main.rs | 28 | 
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() +    } +}  | 
