我如何跟踪最大连续和问题的起始指标?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])
最佳答案
可以反转元素的顺序,运行算法计算最后一个索引(实际上是初始序列的第一个索引),然后计算距序列末尾多远才能得到答案。加法是可交换的:)