lc-go/solutions/9/q918/solution.go

23 lines
509 B
Go

// Package q918 implements a solution for https://leetcode.com/problems/maximum-sum-circular-subarray/
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