class Solution:
def maxSubArray(self, nums: List[int]) -> int:
maxSum = nums[0]
maxSumPre = 0
for i in range(len(nums)):
maxSumPre = max((maxSumPre + nums[i]),nums[i])
maxSum = max(maxSumPre,maxSum)
return maxSum
题目:
知识点:
动态规划
细节问题 / 提交出错点:
No.1
描述:如何定义子问题
出错原因 / 分析思路:
前i个数值的最大值有两种可能
a,前i-1个数值的最大值 + nums[i]
b,nums[i]
No.2
描述:遍历数组的过程中,计算出n个过程最大值,如何在这n个过程最大值中求到最终的最大值?
出错原因 / 分析思路:
只要求到最终的最大值,那不需要将所有过程最大值存储起来。只要每次保留前i-1个过程最大值中的最大值就可以。
maxSumPre记录前i-1个数值的最大值,和当前i计算出的最大值做比较,保留更大的值。
参考资料:
题解:力扣