Medium
Maximum Alternating Subarray Sum — Python
Full explanation · Time O(n) · Space O(1)
# Time: O(n)
# Space: O(1)
class Solution(object):
def maximumAlternatingSubarraySum(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
def kadane(nums, start):
result = float("-inf")
curr = odd = 0
for i in xrange(start, len(nums)):
curr = (curr+nums[i]) if not odd else max(curr-nums[i], 0)
result = max(result, curr)
odd ^= 1
return result
return max(kadane(nums, 0), kadane(nums, 1))