Advertisement
3640. Trionic Array II
UnknownView on LeetCode
3640.cs
C#
public class Solution
{
public long MaxSumTrionic(int[] nums)
{
int n = nums.Length;
int i = 0;
long ans = long.MinValue;
while (i < n)
{
int l = i;
i += 1;
while (i < n && nums[i - 1] < nums[i])
i += 1;
if (i == l + 1)
continue;
int p = i - 1;
long s = nums[p - 1] + nums[p];
while (i < n && nums[i - 1] > nums[i])
{
s += nums[i];
i += 1;
}
if (i == p + 1 || i == n || nums[i - 1] == nums[i])
continue;
int q = i - 1;
s += nums[i];
i += 1;
long mx = 0, t = 0;
while (i < n && nums[i - 1] < nums[i])
{
t += nums[i];
i += 1;
mx = Math.Max(mx, t);
}
s += mx;
mx = 0;
t = 0;
for (int j = p - 2; j >= l; j--)
{
t += nums[j];
mx = Math.Max(mx, t);
}
s += mx;
ans = Math.Max(ans, s);
i = q;
}
return ans;
}
}Advertisement
Was this solution helpful?