- 题目要求:
思路:
- 维护一个tmp,用来保存临时的最大值
- 维护一个res,用来保存全局最大值,也就是结果
- 遍历数组,如果当前的tmp小于0,那么把当前的值赋给tmp,如果当前的值大于0,把当前的值加上tmp的值的和赋给tmp
- 把res和tmp最大的那个赋给res
- 循环结束,返回res
- 核心代码:
# res的初始值为数组当中的随机一个元素即可,初始不能为0,因为有可能数组中所有的元素都小于0res = nums[-1]tmp = 0for i in nums: if tmp < 0: tmp = i else: tmp += i res = max(res, tmp)return res
- 完整代码:
class Solution: def maxSubArray(self, nums: List[int]) -> int: res = nums[-1] tmp = 0 for i in nums: if tmp < 0: tmp = i else: tmp += i res = max(res, tmp) return res