Leetcode 954 Solution

This article provides solution to leetcode question 954 (maximum-sum-circular-subarray)

https://leetcode.com/problems/maximum-sum-circular-subarray

Solution

class Solution { public: int maxSubarraySumCircular(vector<int>& A) { int opt1 = 0; int best1 = INT_MIN; int opt2 = 0; int best2 = INT_MAX; int sum = 0;
for (int i = 0; i < A.size(); i++) { int val = A[i];
opt1 = opt1 < 0 ? val : opt1 + val; if (opt1 > best1) best1 = opt1;
opt2 = opt2 > 0 ? val : opt2 + val; if (opt2 < best2) best2 = opt2;
sum += val; }
if (sum != best2) return max(best1, sum - best2); else return best1; } };