【发布时间】:2019-11-13 09:42:48
【问题描述】:
我想编写一个函数,它将返回 cumsum 大于列表其余部分的最小数字。 List 将只有值 -1 和 1。列表可能有数百万个元素。 例如
v = [1 1 -1 1 -1 1 -1 1]
这里的答案应该是2,因为
1) 1 > 1 is False
2) (1 + 1) 2 > 0 (-1 + 1 -1 +1 -1 +1)
再举一个例子
v = [-1 -1 1 1]
回答 4
我已经尝试过的代码:
def cumsum_grt(v):
for i in range(1, len(v)):
k = i
if sum(v[:k]) > sum(v[k:]):
break
return k
这个功能很好用,但是有什么方法可以提高性能吗?由于无法在几秒钟内计算出大型列表的结果,因此失败。
【问题讨论】:
-
您可能应该以 cumulative 的方式计算累积总和。
-
不回答问题,但不需要
k。在python中,i的值在循环结束后继续存在,因此您可以在使用k的任何地方使用i。 -
为什么我的问题被标记为否定?
-
@BhaveshGhodasara
[-1, -1, -1, -1]的预期结果是什么?我编写的代码将返回1,因为0大于-4。 -
@RomanPerekhrest appologies,我错过了......是的答案应该是 1。