如何跟踪最大连续和问题的起始索引?
index_pairs[]
是最大连续的起始索引[0]
和结束索引[1]
。总和。
我总能找到最大连续的最后一个索引
求和,但我的起始索引index_pairs[0]
将返回
如果在maxsum之后有一个更大的数字,则索引不正确。
我的思路:为了知道起始指数的总和,我必须知道
使用maxendinghere
列表的整数从零添加iterable
时。但是,什么时候
如果maxendinghere小于并且即使下一个连续也更新,则maxendinghere将始终为零
总和(可能不是最大的总和)正在总结中。
有没有办法找到我的最大连续求和指数的起始索引
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])
答案 0 :(得分:1)
你可以颠倒元素的顺序,运行你的算法来计算最后一个索引(它实际上是初始序列的第一个索引),然后计算它从序列末尾到达答案的距离。增加是可交换的:)