27,最大子序和

一。思路

  • 先检验数组存在与否
  • 用一个临时数据检验目前的数和差是否小于零,若小于则摒弃。大于则加入max的行列,使用数和差就检验,不使用就连加
  • 考虑数组全为负的情况在设置检验

二。代码

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        max_sum,minest,total=0,0,0
        if max(nums)<0:
            return max(nums)
        for i in nums:
            total += i
            if total < minest:
                max_sum = max(max_sum, total - minest)
                minest = total
            else:
                max_sum = max(max_sum, total - minest)
        return max_sum

在这里插入图片描述![`![在这里插入图片描述](https://img-blog.csdnimg.cn/20200226182850996.pn](https://img-blog.csdnimg.cn/20200226182907420.png

三分析

  • 这个代码我在想能不能一开始把循环加的lam变成nums【0】,但是总是出现比如{-1}这样的数或者答案不相同的复杂数组。
  • 然后优化成如图代码,效率99,87%优化也不难嘛
  • 发现一堆数组的最大问题都可以改成现在状态遍历下的求记录值得关系,比暴力法方便的多
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值