From 39de318aecdee3f9fb792506881cd962e3db912e Mon Sep 17 00:00:00 2001 From: lxw Date: Fri, 17 May 2024 21:06:32 +0800 Subject: [PATCH] majority-element --- majority-element/Cargo.lock | 7 ++++++ majority-element/Cargo.toml | 6 ++++++ majority-element/src/main.rs | 5 +++++ majority-element/src/solution.rs | 37 ++++++++++++++++++++++++++++++++ majority-element/title.md | 1 + 5 files changed, 56 insertions(+) create mode 100644 majority-element/Cargo.lock create mode 100644 majority-element/Cargo.toml create mode 100644 majority-element/src/main.rs create mode 100644 majority-element/src/solution.rs create mode 100644 majority-element/title.md diff --git a/majority-element/Cargo.lock b/majority-element/Cargo.lock new file mode 100644 index 0000000..59fff44 --- /dev/null +++ b/majority-element/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "majority-element" +version = "0.1.0" diff --git a/majority-element/Cargo.toml b/majority-element/Cargo.toml new file mode 100644 index 0000000..6c3b215 --- /dev/null +++ b/majority-element/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "majority-element" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/majority-element/src/main.rs b/majority-element/src/main.rs new file mode 100644 index 0000000..2ff90e0 --- /dev/null +++ b/majority-element/src/main.rs @@ -0,0 +1,5 @@ +mod solution; +use crate::solution::Solution; +fn main() { + println!("Hello, world!{}", Solution::majority_element(vec![3, 3, 2])); +} diff --git a/majority-element/src/solution.rs b/majority-element/src/solution.rs new file mode 100644 index 0000000..0be6719 --- /dev/null +++ b/majority-element/src/solution.rs @@ -0,0 +1,37 @@ +use std::collections::HashMap; + +pub struct Solution; +impl Solution { + pub fn majority_element(nums: Vec) -> i32 { + let compare = (nums.len()+1) as i32 / 2; + let mut map = HashMap::new(); + + for num in nums { + let mut val = 1; + if map.contains_key(&num) { + val = *map.get(&num).unwrap() + val; + } + map.insert(num.clone(), val); + if val >= compare { + return num; + } + } + + 0 + + } +} + +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn test_three() { + assert_eq!(3,Solution::majority_element(vec![3, 2, 3])); + } + + #[test] + fn test_two() { + assert_eq!(2,Solution::majority_element(vec![2, 2, 1, 1, 1, 2, 2])); + } +} diff --git a/majority-element/title.md b/majority-element/title.md new file mode 100644 index 0000000..66213e8 --- /dev/null +++ b/majority-element/title.md @@ -0,0 +1 @@ +2024-05-17 多数元素