DP
保存了每一num开头的最大和
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
dp = nums
for i in range(len(nums)):
temp = 0
for j in range(i, len(nums)):
temp += nums[j]
dp[i] = max(dp[i], temp)
return max(dp)
DP优化
本题目不需要用到之前的dp,只用nums[i]之前的dp即可,因此不必保存所有的dp状态,只记录之前状态即可
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
res = former = nums[0]
temp = 0
for i in range(1, len(nums)):
if former > 0: former += nums[i]
else: former = nums[i]
res = max(res, former)
return res