zoukankan      html  css  js  c++  java
  • 【剑指offer】面试题42. 连续子数组的最大和

    问题描述

    面试题42. 连续子数组的最大和

    输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。

    要求时间复杂度为O(n)。

    示例1:

    输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
    输出: 6
    解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

    分析

    对于示例,通过分析发现,对于累加的子数组和,如果大于零,继续累加就行;否则,则需要剔除原来的累加和重新开始。输出一直是最大值

    当前待输入    当前累加子数组和   max

    -2  -2删  -2

    1  1   1

    -3  -2 删 1

    4 4 4

    -1 3 4

    2 5 5

    1  6 6

    -5 1 6

    4 5 6

    解题

    class Solution:
        def maxSubArray(self, nums: List[int]) -> int:
            #累加的子数组和,如果大于零,那么我们继续累加就行;否则,则需要剔除原来的累加和重新开始
            if(len(nums) == 0):
                return None
            curmax=nums[0]
            resmax=nums[0]
            for i in nums[1:]:         
                if curmax >0:
                    curmax += i
                else:
                    curmax =i
                if curmax > resmax:
                    resmax = curmax
            return resmax
  • 相关阅读:
    sql推断时间
    COCOFrame
    第41周一
    第40周日
    第40周六
    第40周五
    第40周四
    第40周三国庆
    第40周二晚
    第40周二
  • 原文地址:https://www.cnblogs.com/fuj905/p/12961125.html
Copyright © 2011-2022 走看看