Maximum Sum Circular Subarray
mediumTime: O(n)Space: O(1)
Signals to notice
max subarray sum in circular arraywrapping allowedtotal minus min subarray
Brute force first
Check all circular subarrays — O(n²).
The key insight
Max circular = max(Kadane's, totalSum - minSubarraySum). Wrapping case = total minus the minimum non-wrapping middle. O(n).
What must stay true
Wrapping subarray = total - non-wrapping middle. Minimize middle = maximize wrapping.
Easy way to go wrong
All negative: minSubarray = total, giving circular = 0. Use normal Kadane's in this case.