53. 最大子数组和
-
解题思路:子数组问题,考虑以
i结尾,或者以i开头结果怎么样。本题,以i开头结果是如何?从后往前遍历,假设i+1的结果大于0,为x,那么,求i时,结果就是nums[i] + x,如果x小于0,那么结果就是nums[i] -
代码
class Solution: def maxSubArray(self, nums: List[int]) -> int: ans = -1e+4 # 以i开头的最大数组和是多少? pre = 0 # 后一个的结果 length = len(nums) for i in range(length - 1, -1, -1): # 从后往前遍历nums cur = nums[i] + max(pre, 0) ans = max(ans, cur) pre = max(cur, 0) return int(ans)

浙公网安备 33010602011771号