题目描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
解题思路:动态规划,记录以每个数字结尾构成的连续子数组的最大和,然后取所有这些和中的最大值,因为状态转移过程只涉及到前一个连续子数组的最大和可以进行空间压缩,需要注意的是初始化条件res应该为一个尽可能的小的数,代码如下:
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
total, res = 0, float('-inf')
for num in nums:
total = max(total+num, num)
res = max(res, total)
return res