From 6d715cee592199eedfdf3c3dd111c43653af1089 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Wed, 27 Nov 2024 14:07:39 +0800 Subject: [PATCH] 20241127 finished. --- src/problem/mod.rs | 2 + src/problem/p3208_alternating_groups_ii.rs | 51 ++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/problem/p3208_alternating_groups_ii.rs diff --git a/src/problem/mod.rs b/src/problem/mod.rs index b6f8206..4540b78 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -338,3 +338,5 @@ mod p3238_find_the_number_of_winning_players; mod p632_smallest_range_covering_elements_from_k_lists; mod p3206_alternating_groups_i; + +mod p3208_alternating_groups_ii; diff --git a/src/problem/p3208_alternating_groups_ii.rs b/src/problem/p3208_alternating_groups_ii.rs new file mode 100644 index 0000000..71624a4 --- /dev/null +++ b/src/problem/p3208_alternating_groups_ii.rs @@ -0,0 +1,51 @@ +/** + * [3208] Alternating Groups II + */ +pub struct Solution {} + +// submission codes start here + +impl Solution { + pub fn number_of_alternating_groups(colors: Vec, k: i32) -> i32 { + let n = colors.len(); + let k = k as usize - 1; + + let mut result = 0; + let mut count = 0; + + for i in n..(2 * n + k - 1) { + if colors[i % n] != colors[(i + 1) % n] { + count += 1; + } else { + count = 0; + } + + if count >= k { + result += 1; + } + } + + result + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_3208() { + assert_eq!(1, Solution::number_of_alternating_groups(vec![0, 0, 1], 3)); + assert_eq!(1, Solution::number_of_alternating_groups(vec![0, 1, 1], 3)); + assert_eq!( + 3, + Solution::number_of_alternating_groups(vec![0, 1, 0, 1, 0], 3) + ); + assert_eq!( + 2, + Solution::number_of_alternating_groups(vec![0, 1, 0, 0, 1, 0, 1], 6) + ); + } +}