首页 > 编程语言 > 详细

最大连续子数组和算法

时间:2018-12-10 15:12:23      阅读:160      评论:0      收藏:0      [点我收藏+]

求最大连续子数组和问题

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”

 

最大连续子数组和算法

原文:https://www.cnblogs.com/zxpnotebook/p/10096286.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!