
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)
动态规划解决最大连续子数组和问题
该博客介绍了一个使用动态规划解决寻找数组中最大连续子数组和的问题。代码中定义了dp数组,通过遍历数组并更新dp[i],以找到最大子数组和。最终返回结果为res。这是一个关于算法和数据结构的实例。
1164

被折叠的 条评论
为什么被折叠?



