Facebook
From RajawatBanna, 3 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 52
  1. class Solution {
  2. public:
  3.     int maxSubarraySumCircular(vector<int>& A) {
  4.         int n=A.size();
  5.         int currMax=A[0],currMin=A[0];
  6.         int maxCase=A[0],minCase=A[0];
  7.         int sum=A[0];
  8.         for(int i=1;i<n;i++){
  9.             sum+=A[i];
  10.             currMax=max(currMax+A[i],A[i]);
  11.             currMin=min(currMin+A[i],A[i]);
  12.             maxCase=max(maxCase,currMax);
  13.             minCase=min(minCase,currMin);
  14.         }
  15.         return maxCase<0?maxCase:max(maxCase,(sum-minCase));
  16.     }
  17. };