LeetCode 53_ 最大子序和
1. 题目描述
注: 属于动态规划.
2. 代码
1 class Solution: 2 def maxSubArray(self, nums: List[int]) -> int: 3 for i in range(1,len(nums)): 4 nums[i] = max(nums[i-1] + nums[i], nums[i]) 5 return max(nums)
思路: nums[i] 是从1开始的, 开始算的是num[0]+nums[1]与nums[i]的最大值. 找到最大值, 更新nums[i]. 迭代完成后返回nums的最大值.
另一种解法:
1 import sys 2 class Solution: 3 def maxSubArray(self, nums: 'List[int]') -> 'int': 4 sums = 0 5 maxsum = -sys.maxsize 6 n = len(nums) 7 for i in range(n): 8 if sums < 0:#如果sums为负数, 则直接丢弃不用. 因为负数+任意数肯定小于原来的数. 9 sums = nums[i] 10 else: 11 sums += nums[i] 12 maxsum = max(maxsum,sums)#使用当前连续和更新最大值 13 return maxsum