leetcode_rust/
majority_element.rs

1#![allow(dead_code)]
2
3pub fn majority_element(nums: Vec<i32>) -> i32 {
4    let mut count = 0;
5    let mut temp = nums[0];
6    for num in nums {
7        if num == temp {
8            count += 1;
9        } else if count == 0 {
10            temp = num;
11            count += 1;
12        } else {
13            count -= 1;
14        }
15    }
16
17    temp
18}
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23
24    #[test]
25    fn test1() {
26        assert_eq!(majority_element(vec![3, 2, 3]), 3);
27        assert_eq!(majority_element(vec![2, 2, 1, 1, 1, 2, 2]), 2);
28        assert_eq!(majority_element(vec![6, 5, 5]), 5);
29    }
30}