# LC 2708. Maximum Strength of a Group
### [Problem link](https://leetcode.com/problems/maximum-strength-of-a-group/)
###### tags: `leedcode` `python` `medium`
You are given a **0-indexed** integer array <code>nums</code> 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 <code>i<sub>0</sub></code>, <code>i<sub>1</sub></code>, <code>i<sub>2</sub></code>, ... , <code>i<sub>k</sub></code> is defined as <code>nums[i<sub>0</sub>] * nums[i<sub>1</sub>] * nums[i<sub>2</sub>] * ... * nums[i<sub>k</sub>]</code>.
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:**
- <code>1 <= nums.length <= 13</code>
- <code>-9 <= nums[i] <= 9</code>
## Solution 1
```python=
class Solution:
def maxStrength(self, nums: List[int]) -> int:
if len(nums) == 1:
return nums[0]
neg = []
pos = []
for num in nums:
if num > 0:
pos.append(num)
elif num < 0:
neg.append(num)
if len(neg) % 2:
neg.remove(max(neg))
if not neg and not pos:
return 0
res = 1
for p in pos:
res *= p
for n in neg:
res *= n
return res
```
>### Complexity
>n = nums.length
>| | Time Complexity | Space Complexity |
>| ----------- | --------------- | ---------------- |
>| Solution 1 | O(n) | O(n) |
## Note
分成positive, negative處理.