原题连接:
https://leetcode.cn/problems/maximum-subarray/description/
主要思路:
求最大连续子数组 其实就是求每个元素结尾的数组 的 最大值
如果以第i-1个元素结尾的最大子数组之和大于0,则第 i个元素结尾的子数组就加上第i个元素,
不然就是第i个元素
所以 dp方程为 dp[i] = dp[i-1]>0?dp[i-1]+num[i]:nums[i]
其中 dp[i] 表示 以第i个元素结尾的最大连续数组的和
代码:
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
l = [nums[0]]
for i in range(1,len(nums)):
if l[i-1]>0:
l.append(l[i-1]+nums[i])
else:
l.append(nums[i])
return max(l)
其他优化方法后续更新....