-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSolution918.cs
32 lines (26 loc) · 875 Bytes
/
Solution918.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using LeetCode.DataStructures;
namespace LeetCode.Solutions;
public class Solution918
{
/// <summary>
/// 918. Maximum Sum Circular Subarray - Medium
/// <a href="https://leetcode.com/problems/maximum-sum-circular-subarray">See the problem</a>
/// </summary>
public int MaxSubarraySumCircular(int[] nums)
{
var maxSum = int.MinValue;
var minSum = int.MaxValue;
var currentMax = 0;
var currentMin = 0;
var totalSum = 0;
foreach (var num in nums)
{
currentMax = Math.Max(currentMax + num, num);
maxSum = Math.Max(maxSum, currentMax);
currentMin = Math.Min(currentMin + num, num);
minSum = Math.Min(minSum, currentMin);
totalSum += num;
}
return maxSum > 0 ? Math.Max(maxSum, totalSum - minSum) : maxSum;
}
}