From 154029eb1cca198174df10da937eb6f2a6bbf70d Mon Sep 17 00:00:00 2001 From: jusexton Date: Sun, 28 Jul 2024 01:40:58 -0500 Subject: [PATCH] Added maximum positive or negative integer count solution. --- README.md | 1 + src/leetcode/max_positive_negative.rs | 25 +++++++++++++++++++++++++ src/leetcode/mod.rs | 1 + 3 files changed, 27 insertions(+) create mode 100644 src/leetcode/max_positive_negative.rs diff --git a/README.md b/README.md index 9b90a06..a5b5ed6 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,7 @@ other languages. - Max Repeating Substring (https://leetcode.com/problems/maximum-repeating-substring/) - Sort by Increasing Frequency (https://leetcode.com/problems/sort-array-by-increasing-frequency) - Maximum Odd Binary Number (https://leetcode.com/problems/maximum-odd-binary-number) +- Maximum Count of Positive or Negative Integer (https://leetcode.com/problems/maximum-count-of-positive-integer-and-negative-integer) #### Medium diff --git a/src/leetcode/max_positive_negative.rs b/src/leetcode/max_positive_negative.rs new file mode 100644 index 0000000..1feba5b --- /dev/null +++ b/src/leetcode/max_positive_negative.rs @@ -0,0 +1,25 @@ +use std::cmp::Ordering; + +pub fn maximum_count(numbers: Vec) -> i32 { + let counts = numbers.into_iter().fold((0, 0), |mut acc, curr| { + match curr.cmp(&0) { + Ordering::Greater => acc.1 += 1, + Ordering::Less => acc.0 += 1, + Ordering::Equal => {} + } + acc + }); + counts.0.max(counts.1) +} + +#[cfg(test)] +mod tests { + use super::maximum_count; + + #[test] + fn maximum_positive_negative_count_is_provided() { + let numbers = vec![-1, -2, 0, 2, 5, -3]; + let actual = maximum_count(numbers); + assert_eq!(3, actual) + } +} diff --git a/src/leetcode/mod.rs b/src/leetcode/mod.rs index 78f37a0..252647d 100644 --- a/src/leetcode/mod.rs +++ b/src/leetcode/mod.rs @@ -51,3 +51,4 @@ mod freq_sort; mod sort_jumbled_numbers; mod max_binary_number; mod custom_sort; +mod max_positive_negative;