最大连续子数组和算法

Posted zxpnotebook

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大连续子数组和算法相关的知识,希望对你有一定的参考价值。

求最大连续子数组和问题

sample input:

-1,4,-3,6,-20,4,-2,5

sample output:

7

最容易想到的就是暴力解决方法,穷举所有连续子数组的可能性,进行比较,复杂度O(n2)

代码略

复杂度为O(n)的算法:

  1. 如果arr[0]的值大于0,将max赋值为arr[0],否则赋值为0
  2. 读取下一项,累加到sum,如果sum>0,且如果sum>max,将max更新为sum的值,如果sum<0,将sum赋值为0
  3. 重复(2)直至最后一项,所得max即为所求。

代码如下(python3):

def getMaxSub(arr):
    max = arr[0]
    sum = arr[0]
i = 1
while(i<len(arr)): sum += arr[i] if(sum<=0): sum = 0 elif(sum>max): max = sum i += 1 print(max sum of submatrix is ,max) #for test getMaxSub([-1,4,-3,6,-20,4,-2,5])

输出结果为“max sum of submatrix is  7”

 


以上是关于最大连续子数组和算法的主要内容,如果未能解决你的问题,请参考以下文章

[算法导论]4.1-5最大连续子数组问题

最大连续子矩阵和算法

经典算法——连续子数组最大和问题

编程之法:面试和算法心得(最大连续子数组和)

算法(动态规划):连续子数组的最大和

算法简单题,吾辈重拳出击 - 连续子数组的最大和