g2701_2800.s2708_maximum_strength_of_a_group.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g2701_2800.s2708_maximum_strength_of_a_group;
// #Medium #Array #Sorting #Greedy #Backtracking
// #2023_09_15_Time_2_ms_(85.08%)_Space_43.1_MB_(57.14%)
import java.util.ArrayList;
import java.util.List;
/**
* 2708 - Maximum Strength of a Group\.
*
* Medium
*
* You are given a **0-indexed** integer array `nums` representing the score of students in an exam. The teacher would like to form one **non-empty** group of students with maximal **strength** , where the strength of a group of students of indices i0
, i1
, i2
, ... , ik
is defined as nums[i0] * nums[i1] * nums[i2] * ... * nums[ik]
.
*
* Return _the maximum strength of a group the teacher can create_.
*
* **Example 1:**
*
* **Input:** nums = [3,-1,-5,2,5,-9]
*
* **Output:** 1350
*
* **Explanation:** One way to form a group of maximal strength is to group the students at indices [0,2,3,4,5]. Their strength is 3 \* (-5) \* 2 \* 5 \* (-9) = 1350, which we can show is optimal.
*
* **Example 2:**
*
* **Input:** nums = [-4,-5,-4]
*
* **Output:** 20
*
* **Explanation:** Group the students at indices [0, 1] . Then, we’ll have a resulting strength of 20. We cannot achieve greater strength.
*
* **Constraints:**
*
* * `1 <= nums.length <= 13`
* * `-9 <= nums[i] <= 9`
**/
public class Solution {
public long maxStrength(int[] nums) {
List filtered = new ArrayList<>();
long product = 1L;
boolean hasZero = false;
for (int num : nums) {
if (num == 0) {
hasZero = true;
continue;
}
filtered.add(num);
product *= num;
}
if (filtered.isEmpty()) {
return 0;
}
if (filtered.size() == 1 && filtered.get(0) <= 0) {
return hasZero ? 0 : filtered.get(0);
}
long result = product;
for (int num : nums) {
if (num == 0) {
continue;
}
result = Math.max(result, product / num);
}
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy