码迷,mamicode.com
首页 > 编程语言 > 详细

最大连续子数组和算法

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

标签:更新   比较   col   color   class   get   赋值   连续子数组   def   

求最大连续子数组和问题

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”

 

最大连续子数组和算法

标签:更新   比较   col   color   class   get   赋值   连续子数组   def   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!