From 1907feaa7a0b37b5c339b2d785e283c30cae08cc Mon Sep 17 00:00:00 2001 From: jackfiled Date: Sat, 17 May 2025 14:00:52 +0800 Subject: [PATCH] 20250517 finished. --- src/problem/mod.rs | 2 ++ src/problem/p75_sort_colors.rs | 53 ++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 src/problem/p75_sort_colors.rs diff --git a/src/problem/mod.rs b/src/problem/mod.rs index 6c6308c..75dc885 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -658,3 +658,5 @@ mod p3337_total_characters_in_string_after_transformations_ii; mod p2900_longest_unequal_adjacent_groups_subsequence_i; mod p2901_longest_unequal_adjacent_groups_subsequence_ii; + +mod p75_sort_colors; diff --git a/src/problem/p75_sort_colors.rs b/src/problem/p75_sort_colors.rs new file mode 100644 index 0000000..d2bb974 --- /dev/null +++ b/src/problem/p75_sort_colors.rs @@ -0,0 +1,53 @@ +/** + * [75] Sort Colors + */ +pub struct Solution {} + +// submission codes start here + +impl Solution { + pub fn sort_colors(nums: &mut Vec) { + let (mut zero_count, mut one_count, mut two_count) = (0, 0, 0); + + for i in nums.iter() { + match i { + &0 => zero_count += 1, + &1 => one_count += 1, + &2 => two_count += 1, + _ => {} + } + } + + let mut pos = 0; + for _ in 0..zero_count { + nums[pos] = 0; + pos += 1; + } + for _ in 0..one_count { + nums[pos] = 1; + pos += 1; + } + for _ in 0..two_count { + nums[pos] = 2; + pos += 1; + } + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_75() { + let mut input = vec![2, 0, 2, 1, 1, 0]; + Solution::sort_colors(&mut input); + assert_eq!(vec![0, 0, 1, 1, 2, 2], input); + + let mut input = vec![2, 0, 1]; + Solution::sort_colors(&mut input); + assert_eq!(vec![0, 1, 2], input); + } +}