dp[i]表示为,以当前nums[i]为结尾的值时最大连续子数组和
dp[i]的选择要么选择自己时最大的,要么与之前相连的求和最大
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
dp = [-99999] * (len(nums))
dp[0] = nums[0]
for i in range(1, len(nums)):
dp[i] = max(nums[i], nums[i] + dp[i - 1])
res = -999999999
for i in range(0, len(dp)):
res = max(res, dp[i])
return res
if __name__ == '__main__':
nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
Sol = Solution()
res = Solution.maxSubArray(Sol, nums)
print(res)