题目:
解法一:动态规划
如果前面的和小于0,那么加上以后一定比当前值小,则置前面的和为0
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
maxn = float("-inf")
curr = 0
for i in range(len(nums)):
if curr < 0:
curr = 0
curr += nums[i]
maxn = max(maxn, curr)
return maxn
时间复杂度O(n),空间复杂度O(1)
解法二:
找左边的最大子序列,右边的最大子序列和从包括中间数的子序列。
时间复杂度O(NlogN)