Maximum Sum Circular Subarray LeetCode solution in C++
1class Solution {2public:3int maxSubarraySumCircular(vector<int> &nums) {4int totalSum = 0, maxSum = INT_MIN, curMax = 0, minSum = INT_MAX, curMin = 0;5for (int x : nums) {6curMax = max(x, curMax + x); // update the current max subarray sum7maxSum = max(maxSum, curMax); // update the overall max subarray sum8curMin = min(x, curMin + x); // update the current min subarray sum9minSum = min(minSum, curMin); // update the overall min subarray sum10totalSum += x;11}12return maxSum > 0 ? max(maxSum, totalSum - minSum) : maxSum;13}14};