题目链接 | 918. 环形子数组的最大和 |
---|---|
思路 | 最大子数组和-简单变体 |
题解链接 | 没有思路?一张图秒懂!(Python/Java/C++/Go/JS) |
关键点 | 无 |
时间复杂度 | \(O(n)\) |
空间复杂度 | \(O(1)\) |
代码实现:
class Solution:def maxSubarraySumCircular(self, nums: List[int]) -> int:max_answer = -infmin_answer = 0maxv = minv = 0for num in nums:maxv = max(maxv, 0) + nummax_answer = max(max_answer, maxv)minv = min(minv, 0) + nummin_answer = min(min_answer, minv)sum_ = sum(nums)if sum_ == min_answer:return max_answerreturn max(max_answer, sum_ - min_answer)