我如何跟踪最大连续和问题的起始指标?
index_pairs[]是最大连续和的开始指数[0]和结束指数[1]
我总是能找到最大连续的最后一个指标。
总和,但我的起始索引,index_pairs[0]将返回
如果maxsum之后有一个较大的数字,则索引不正确。
我的思路是:要知道起始指数之和,我必须知道
maxendinghere从零开始与myiterable列表的整数相加时。但是,当
如果maxendinghere小于,则它始终为零到零,并且即使下一个连续的
正在对sum(可能不是最大的sum)进行求和。
有没有办法找到我的最大连续求和指数的起始指标?

from random import randrange
iterable = [randrange(-10,10) for r in xrange(100)]

def max_continuous_sequence(iterable):
    maxsum, maxendinghere = 0, 0
    index_pairs = [0,0]
    for i,x in enumerate(iterable):
        # summing next numbers
        maxendinghere += x
        if maxsum < maxendinghere:
            # found a higher sum
            maxsum = maxendinghere
            index_pairs[1] = i
        elif maxendinghere < 0:
            # resets the max here if next element is less than zero
            maxendinghere = 0
            # starts off the index at where we ended last
            index_pairs[0] = i+1
    return (index_pairs[0],index_pairs[1])

最佳答案

可以反转元素的顺序,运行算法计算最后一个索引(实际上是初始序列的第一个索引),然后计算距序列末尾多远才能得到答案。加法是可交换的:)

09-09 21:56