LeetCode-918-环形子数组的最大和
题目
给定一个长度为 n
的环形整数数组
nums
,返回 nums
的非空
子数组 的最大可能和 。
环形数组
意味着数组的末端将会与开头相连呈环状。形式上, nums[i]
的下一个元素是 nums[(i + 1) % n]
, nums[i]
的前一个元素是 nums[(i - 1 + n) % n]
。
子数组 最多只能包含固定缓冲区 nums
中的每个元素一次。形式上,对于子数组
nums[i], nums[i + 1], ..., nums[j]
,不存在
i <= k1, k2 <= j
其中 k1 % n == k2 % n
。
示例 1:
1 |
|
示例 2:
1 |
|
示例 3:
1 |
|
提示:
n == nums.length
1 <= n <= 3 * 104
-3 * 104 <= nums[i] <= 3 * 104
题解
参考:
这一题要分两个情况:
第一个情况是最大和不跨越数组,第二个情况是最大和跨越了数组(也就是环形从后面连到前面了)。
对于不跨越数组的情况,那就是53题啦;
当跨越了数组时,因为最大子数组和+其余元素和=常数,所以其余元素和越小,子数组和就越大,那么计算的时候我们维护最大子数组和与其余元素和即可。
1 |
|
LeetCode-918-环形子数组的最大和
https://excelius.xyz/leetcode-918-环形子数组的最大和/