动态规划:参考链接经典动态规划问题(理解「无后效性」)
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
dp = []
dp[0] = nums[0] # 起始状态
for i in range(1, len(nums)):
if nums[i] + dp[i-1] > nums[i]:
dp[i] = nums[i] + dp[i-1]
else: dp[i] = nums[i] # 状态转移
return max(dp)
- 优化空间复杂度为1
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
nlen = len(nums)
pre = nums[0] #
res = nums[0]
for i in range(1, nlen):
if pre > 0: pre += nums[i]
else: pre = nums[i]
res = max(res, pre)
return res