def maxSubArray(nums):
"""
:type nums: List[int]
:rtype: int
"""
for i in range(1, len(nums)):
print(nums[i])
print("max", max(nums[i - 1], 0))
nums[i] = nums[i] + max(nums[i - 1], 0)
print(nums)
return max(nums)
print(maxSubArray([1, 2, -3, 4, -9, 11, -7, -10, 7, 1]))
# print(max((1, 2), (3, 4), (5, 6)))
"""
思路:可以理解为思想是动态规划,
nums[i-1]并不是数组前一项,而是到前一项为止的最大子序和,
和0比较是因为只要大于0,就可以相加构造最大子序和。
如果小于0则相加为0,nums[i]=nums[i],
相当于最大子序和又重新计算。其实是一边遍历一边计算最大序和
"""
《最大子序和》算法日记 2021.7.20,每天一道算法题,怒刷Leetcode,解决之前速度问题。代码为评论区,思路动态规划,继续学习中
最新推荐文章于 2021-11-25 17:34:14 发布