mediumArrayDynamic ProgrammingDynamic Programming

Maximum Sum Circular Subarray

mediumTime: O(n)Space: O(1)

Recognize the pattern

max subarray sum in circular arraywrapping allowedtotal minus min subarray

Brute force idea

Check all circular subarrays — O(n²).

Better approach

Max circular = max(Kadane's, totalSum - minSubarraySum). Wrapping case = total minus the minimum non-wrapping middle. O(n).

Key invariant

Wrapping subarray = total - non-wrapping middle. Minimize middle = maximize wrapping.

Watch out for

All negative: minSubarray = total, giving circular = 0. Use normal Kadane's in this case.

Dynamic Programming Pattern