【发布时间】:2018-09-16 19:15:59
【问题描述】:
我正在从hackerrank 做这个数组操作问题,它告诉我运行时错误。从我的角度来看,时间复杂度是 O(n)。但它仍然遇到了这个问题。谁能帮帮我?
下面是link:
从一个索引为 1 的零数组和一个操作列表开始,对于每个操作,在两个给定索引之间的每个数组元素中添加一个值,包括两个给定索引。执行完所有操作后,返回数组中的最大值。
例如,您的 zeros 数组的长度。您的查询列表如下:
a b k 1 5 3 4 8 7 6 9 1添加索引和包含之间的值:
index -> 1 2 3 4 5 6 7 8 9 10 [0,0,0, 0, 0,0,0,0,0, 0] [3,3,3, 3, 3,0,0,0,0, 0] [3,3,3,10,10,7,7,7,0, 0] [3,3,3,10,10,8,8,8,1, 0]所有操作都执行完后的最大值。
我在这里附上了我的代码:
def arrayManipulation(n,queries):
increment=[]
value=[]
for i in range(n):
increment+=[0]
value+=[0]
for j in range(m):
left=queries[j][0]
right=queries[j][1]
k=queries[j][2]
increment[left-1]+=k
if right>=n:
continue
else:
increment[right]-=k
value[0]=increment[0]
for i in range(1,n):
value[i]=value[i-1]+increment[i]
maximum=max(value)
return maximum
【问题讨论】:
-
m 在定义之前使用
-
抱歉忘记提到 m 是一个全局变量。 @yar
-
@Robin 然后提供minimal reproducible example:完成 - 可验证
标签: python arrays python-3.x