解题思路
动态规划
- 设置第一个值为最大和的连续子数组
- 计算第二个连续子数组的和
- 如果第二个连续子数组的和小于第二个数值,就把当前的数值当作以当前值为结束的连续子数组的最大和
- 再更新最大和
python 代码
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
dp = [0]*len(nums)
dp[0] = nums[0]
result = nums[0]
for i in range(1,len(nums)):
dp[i] = max(dp[i-1]+nums[i],nums[i])
result = max(result,dp[i])
return result
s = Solution()
result = s.maxSubArray([-2,1,-3,4,-1,2,1,-5,4])
print(result)