918_MaximumSumCircularSubarray - a920604a/leetcode GitHub Wiki


title: 918. Maximum Sum Circular Subarray tags:
- dp categories: leetcode comments: false

solution

class Solution {
public:
    int maxSubarraySumCircular(vector<int>& nums) {
        
        //  5   -3  5   
        //  5   -3  2   
        // ε°‹ζ‰Ύζœ€ε€§ιžεΎͺη’°ε­ι™£εˆ— θˆ‡ ζœ€ε€§εΎͺη’°ε­ι™£εˆ—  = total sum - ζœ€ε°ε’Œηš„ε­ι™£εˆ—
        
        int global_mx = INT_MIN, local = 0;
        local = 0;
        for(int n:nums){
            local = max(n, local+n);
            global_mx =  max(global_mx, local);
        }
        int global_mn = INT_MAX;
        local = 0;
        
        int total = 0;
        for(int n:nums){
            total+=n;
            local = min(n+local, n);
            global_mn = min(local, global_mn);
            
        }
        if( total == global_mn) return global_mx;
        return max(global_mx, total - global_mn);
    }
};

analysis

  • time complexity O(n)
  • space complexity O(1)
⚠️ **GitHub.com Fallback** ⚠️