Python:如何求数组连续最大值

本秂侑毒 提交于 2019-11-27 16:40:53

1.重复利用已经计算的子数组和:O(n2)

def maxSubArr(arr):
    if arr == None:
        print('数组为空')
        return
    maxsum = -2**31
    i = 0
    lens = len(arr)
    while i<lens :
        j = i
        sums = 0
        while j<lens :
            sums += arr[j]
            if sums > maxsum :
                maxsum = sums
            j += 1
        i += 1
    return maxsum

2.动态规划法:O(n)

def maxSubArr(arr):
    lens = len(arr)
    if arr == None or lens<1 :
        print('参数不合法')
        return
    ends = alls = arr[0]
    i = 1
    while i<lens :
        ends = max(ends+arr[i], arr[i]) #包含最后一个元素的最大子数组和
        alls = max(ends, alls)          #最大子数组和
        i += 1
    return alls
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!