from typing import Listdef MaxSubSum(nums: List[int]) -> int: # dp[i]: 以i结尾的最大字串和 dp = [None for i in range(len(nums) + 1)] dp[0] = float('-INF') for i in range(1, len(nums) + 1): # 可能出现负数的情况 dp[i] = max(nums[i - 1], dp[i - 1] + nums[i - 1]) return max(dp)def MaxSubSum1(nums: List[int]) -> int: # dp[i], [0, i] 最大字串和 # dp[i] = max(dp[i-1], max_end_i)) # 以i为结尾的最长字串和 max_end_i = [] dp = [] for i in range(len(nums)): dp[i] = max(dp[i], max_end_i[i])# nums = [1, 1, -3, 6, 7, -1, 3, 4, -3, -4, -8]nums = [-3, 1, 3, -1, 2, -4, 2]print(MaxSubSum(nums))
总结