Leetcode剑指-Offer-42-连续子数组的最大和-Python实现同53题

  • 题目要求:

  • 思路:

    • 维护一个tmp,用来保存临时的最大值
    • 维护一个res,用来保存全局最大值,也就是结果
    • 遍历数组,如果当前的tmp小于0,那么把当前的值赋给tmp,如果当前的值大于0,把当前的值加上tmp的值的和赋给tmp
    • 把res和tmp最大的那个赋给res
    • 循环结束,返回res
  • 核心代码:
# res的初始值为数组当中的随机一个元素即可,初始不能为0,因为有可能数组中所有的元素都小于0
res = nums[-1]
tmp = 0
for 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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理