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

Posted fuj905

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指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

 

以上是关于剑指offer面试题42. 连续子数组的最大和的主要内容,如果未能解决你的问题,请参考以下文章

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

剑指OFFER----面试题42. 连续子数组的最大和

剑指offer-面试题42-连续子数组的最大和-动态规划

剑指 Offer 53 - I. 在排序数组中查找数字 I / 剑指 Offer 42. 连续子数组的最大和(线段树基础)/152. 乘积最大子数组 / 面试题 10.02. 变位词组

[剑指offer]面试题31:连续子数组的最大和

剑指offer面试题31连续子数组的最大和