Maximum Subarray II
给定一个数组,寻找两个连续不相交的子串,使其和最大。 比如: [1, 3, -1, 2, -1, 2],那么 [1, 3] 和 [2, -1, 2] 或 [1, 3, -1, 2] 和 [2]都有最大的和7。 |
思路是分层两段,左边和右边分别计算max subarray,然后两边加起来最大的就是结果。
def maxTwoSubArrays(nums):
# write your code here
left = []
localmax = 0
Max = -float('inf')
for num in nums:
localmax = max(num, localmax+num)
Max = max(localmax, Max)
left.append(Max)
localmax = 0
Max = -float('inf')
res = -float('inf')
for i in range(1, len(nums))[::-1]:
localmax = max(nums[i], localmax+nums[i])
Max = max(localmax, Max)
res = max(res, left[i-1]+Max)
return res