LeetCode 2708. 一个小组的最大实力值
原题链接
中等
作者:
hpstory
,
2023-06-02 22:38:59
,
所有人可见
,
阅读 142
C# 两次遍历代码
public class Solution {
public long MaxStrength(int[] nums) {
int n = nums.Length;
Array.Sort(nums);
long result = int.MinValue;
long p = 1;
for (int i = n - 1; i >= 0; i--){
if (nums[i] > 0){
p *= nums[i];
result = Math.Max(result, p);
}
}
for (int i = 0; i < n; i++){
if (nums[i] < 0){
p *= nums[i];
result = Math.Max(result, p);
}
}
if (result < 0 && nums.Contains(0)) return 0;
return result;
}
}
C# 优化代码
public class Solution {
public long MaxStrength(int[] nums) {
int n = nums.Length;
long min = nums[0], max = nums[0];
for (int i = 1; i < n; i++){
long[] a = {max, nums[i], max * nums[i], min * nums[i]};
long[] b = {min, nums[i], max * nums[i], min * nums[i]};
max = a.Max();
min = b.Min();
}
return max;
}
}