LC 918. Maximum Sum Circular Subarray

link

 

 

class Solution {
public:
    int maxSubarraySumCircular(vector<int>& A) {
        int maxsum=INT_MIN;
        int minsum=INT_MAX;
        int total=0;
        int curmax=0;
        int curmin=0;
        for(int i=0;i<A.size();i++){
            curmax=max(curmax+A[i],A[i]);
            curmin=min(curmin+A[i],A[i]);
            maxsum=max(maxsum,curmax);
            minsum=min(minsum,curmin);
            total+=A[i];
        }
        return total==minsum?maxsum : max(maxsum,total-minsum);
    }
};

 

posted @ 2020-05-16 08:45  feibilun  阅读(99)  评论(0编辑  收藏  举报