连续子数组的最大和

简介: 连续子数组的最大和

题目1 连续子数组的最大和


  • 描述:
    输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。


  • 思路
    最大和连续子数组一定有如下几个特点: 1、第一个不为负数 2、如果前面数的累加值加上当前数后的值会比当前数小,说明累计值对整体和是有害的;如果前面数的累加值加上当前数后的值比当前数大或者等于,则说明累计值对整体和是有益的。 步骤: 1、定义两个变量,一个用来存储之前的累加值,一个用来存储当前的最大和。遍历数组中的每个元素,假设遍历到第i个数时: ①如果前面的累加值为负数或者等于0,那对累加值清0重新累加,把当前的第i个数的值赋给累加值。 ②如果前面的累加值为整数,那么继续累加,即之前的累加值加上当前第i个数的值作为新的累加值。 2、判断累加值是否大于最大值:如果大于最大值,则最大和更新;否则,继续保留之前的最大和。
    剑指offer之连续子数组的最大和(Python)


  • 实现

def findx(array):
    temp=array[0]
    curSum=0
    for num in array:
        if curSum<=0:
            curSum=num
        else:
            curSum+=num
        if curSum>temp:
            temp=curSum
    return temp


相关文章
|
5月前
leetcode-581:最短无序连续子数组
leetcode-581:最短无序连续子数组
30 0
【剑指offer】-连续子数组的最大和-30/67
【剑指offer】-连续子数组的最大和-30/67
|
5月前
|
算法
滑动窗口-求数组的所有连续子数组【学习算法】
滑动窗口-求数组的所有连续子数组【学习算法】
38 0
|
12月前
|
存储 算法
算法:滑动窗口解决连续区间子数组问题
算法:滑动窗口解决连续区间子数组问题
剑指offer 43. 连续子数组的最大和
剑指offer 43. 连续子数组的最大和
69 0
|
存储
【LeetCode】同余定理处理连续的子数组和
【LeetCode】同余定理处理连续的子数组和
116 0
|
人工智能
连续子数组的最大和
连续子数组的最大和
87 0
|
JavaScript 前端开发
《剑指Offer》- 连续子数组的最大和或最小和
本文是《剑指Offer》系列(JavaScript版)的第一篇,题目是“连续子数组的最大和或最小和”。
163 0
|
人工智能 BI
最大连续子序列和
最大连续子序列和
141 0