尝试创建一个函数,其中将数组a作为参数传递,并返回一对索引x,y,使得最大总和为sum(a[x:y])。
例如,假设我有数组[4,-2,-3,7,3,-1]。该函数将接受此数组并输出(3, 4),因为从索引3到索引4的数字序列是您可以在此数组中制作的最大数字之一。 10是您通过将任何序列相加在此数组中找到的最大数字。
这是我目前拥有的代码,它或多或少有效,但对于长度> 10000的数组而言却需要很长时间。有什么建议吗?
例如,假设我有数组[4,-2,-3,7,3,-1]。该函数将接受此数组并输出(3, 4),因为从索引3到索引4的数字序列是您可以在此数组中制作的最大数字之一。 10是您通过将任何序列相加在此数组中找到的最大数字。
这是我目前拥有的代码,它或多或少有效,但对于长度> 10000的数组而言却需要很长时间。有什么建议吗?
def bentley(a):
max = 0
indices = 0,0
for x in range(len(a)):
for y in range(len(a)):
if sum(a[x:y]) > max:
max = sum(a[x:y])
indices = x,y
return indices