class Solution:
def maxSubArray(self, nums: List[int]) -> int:
'''
# 动态规划做法
dp = [0]*(len(nums)+1)
nums = [0] + nums
for i in range(1,len(nums)):
dp[i] = max(dp[i-1]+nums[i],nums[i])
return max(dp)
'''
res = float('-inf')
maxNum = 0
for i in range(len(nums)):
maxNum += nums[i]
if maxNum>res:
res = maxNum
if maxNum<=0:
maxNum = 0
return res
针对贪心算法
maxNum用于存储当前序列的值,当这个真是小于0时舍弃,因为当这个数组均为负数时,那结果肯定是这个数组里面的最大值,当这个数组里面有正负数时,那序列的最大值肯定是>=0的。res就是存储maxNum里面的最大值,并且是最终结果。
针对动态规划算法:
dp数组表示,前i个数中最大连续序列之和。
分为选择当前元素与不选择当前元素,选择当前元素,则比较当前元素与前一dp数组的值之和与当前单个元素相比较,取最大值