From 62515ef741c3a634da4ab40270b40b6cd342f48e Mon Sep 17 00:00:00 2001 From: jackfiled Date: Sat, 10 May 2025 14:46:15 +0800 Subject: [PATCH] 20250510 finished. --- src/problem/mod.rs | 2 + ...sum_of_two_arrays_after_replacing_zeros.rs | 47 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 src/problem/p2918_minimum_equal_sum_of_two_arrays_after_replacing_zeros.rs diff --git a/src/problem/mod.rs b/src/problem/mod.rs index e6db94c..157580e 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -644,3 +644,5 @@ mod p3341_find_minimum_time_to_reach_last_room_i; mod p3342_find_minimum_time_to_reach_last_room_ii; mod p3343_count_number_of_balanced_permutations; + +mod p2918_minimum_equal_sum_of_two_arrays_after_replacing_zeros; diff --git a/src/problem/p2918_minimum_equal_sum_of_two_arrays_after_replacing_zeros.rs b/src/problem/p2918_minimum_equal_sum_of_two_arrays_after_replacing_zeros.rs new file mode 100644 index 0000000..0c13b46 --- /dev/null +++ b/src/problem/p2918_minimum_equal_sum_of_two_arrays_after_replacing_zeros.rs @@ -0,0 +1,47 @@ +/** + * [2918] Minimum Equal Sum of Two Arrays After Replacing Zeros + */ +pub struct Solution {} + +// submission codes start here +use std::cmp::Ordering; + +impl Solution { + pub fn min_sum(nums1: Vec, nums2: Vec) -> i64 { + let mut nums1_sum: i64 = nums1.iter().map(|x| *x as i64).sum(); + let mut nums2_sum: i64 = nums2.iter().map(|x| *x as i64).sum(); + let nums1_zero_count = nums1.iter().filter(|x| **x == 0).count() as i64; + let nums2_zero_count = nums2.iter().filter(|x| **x == 0).count() as i64; + + match (nums1_sum + nums1_zero_count).cmp(&(nums2_sum + nums2_zero_count)) { + Ordering::Less => { + if nums1_zero_count == 0 { + -1 + } else { + nums2_sum + nums2_zero_count + } + } + Ordering::Greater => { + if nums2_zero_count == 0 { + -1 + } else { + nums1_sum + nums1_zero_count + } + } + Ordering::Equal => nums1_sum + nums1_zero_count, + } + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_2918() { + assert_eq!(12, Solution::min_sum(vec![3, 2, 0, 1, 0], vec![6, 5, 0])); + assert_eq!(-1, Solution::min_sum(vec![2, 0, 2, 0], vec![1, 4])); + } +}