53. 最大子序和
动态规划
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
n = len(nums)
if n < 1:
return nums[0]
sum = nums[0]
result = nums[0]
for i in range(1,n):#找到第i个数为止最大的和
if sum >= 0 :
sum += nums[i]
else:
sum = nums[i]
if sum > result:#所有和里最大的
result = sum
return result
简化
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
size = len(nums)
if size < 1:
return nums[0]
pre = 0
res = nums[0]
for i in range(size):
pre = max(nums[i], pre + nums[i])
res = max(res, pre)
return res