lc-go/solutions/9/q918/solution.go
2026-02-26 17:18:02 +09:00

22 lines
406 B
Go

package q918
func maxSubarraySumCircular(nums []int) int {
maxSum, minSum, maxPfx, minPfx := nums[0], nums[0], 0, 0
sum := 0
for _, num := range nums {
sum += num
maxSum = max(maxSum, sum-minPfx)
minSum = min(minSum, sum-maxPfx)
maxPfx = max(maxPfx, sum)
minPfx = min(minPfx, sum)
}
if sum == minSum {
return maxSum
}
return max(maxSum, sum-minSum)
}
var _ = maxSubarraySumCircular