20240903 finished.

This commit is contained in:
jackfiled 2024-09-03 11:33:56 +08:00
parent 828e1f910d
commit f971f358c1
2 changed files with 64 additions and 1 deletions

View File

@ -223,4 +223,5 @@ mod p3142_check_if_grid_satisfies_conditions;
mod p3153_sum_of_digit_differences_of_all_pairs; mod p3153_sum_of_digit_differences_of_all_pairs;
mod p3127_make_a_square_with_the_same_color; mod p3127_make_a_square_with_the_same_color;
mod p1450_number_of_students_doing_homework_at_a_given_time; mod p1450_number_of_students_doing_homework_at_a_given_time;
mod p2024_maximize_the_confusion_of_an_exam; mod p2024_maximize_the_confusion_of_an_exam;
mod p2708_maximum_strength_of_a_group;

View File

@ -0,0 +1,62 @@
/**
* [2708] Maximum Strength of a Group
*/
pub struct Solution {}
// submission codes start here
impl Solution {
pub fn max_strength(nums: Vec<i32>) -> i64 {
if nums.len() == 1 {
return nums[0] as i64;
}
let mut nums = nums;
nums.sort();
let mut now = 0;
let mut result = 1;
let mut found = false;
while now < nums.len() {
if nums[now] > 0 {
break;
}
if now + 1 < nums.len() && nums[now] * nums[now + 1] > 0 {
let r = nums[now] * nums[now + 1];
result *= r as i64;
found = true;
now += 2;
} else {
now += 1;
}
}
while now < nums.len() {
result *= nums[now] as i64;
found = true;
now += 1;
}
match found {
true => result,
false => 0
}
}
}
// submission codes end
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_2708() {
assert_eq!(20, Solution::max_strength(vec![-4, -5, -4]));
assert_eq!(1350, Solution::max_strength(vec![3, -1, -5, 2, 5, -9]));
}
}