【发布时间】:2019-03-03 11:37:16
【问题描述】:
问题是 *从 1 索引的零数组和操作列表开始,对于每个操作,在两个给定索引之间的每个数组元素中添加一个值,包括在内。执行完所有操作后,返回数组中的最大值。 *
这是我的代码
def arrayManipulation(n, queries):
li = [0] * n
for query in queries:
a, b, c = map(int, [query[0], query[1], query[2]])
for i in range(a-1, b):
li[i] += c
return max(li)
虽然运行良好的代码是这样的
def arrayManipulation(n, queries):
N, M = n, len(queries)
li = [0] * n
for i in range(M):
a, b, k = map(int, [queries[i][0], queries[i][1], queries[i][2]])
li[a-1] += k
try:
li[b] -= k
except:
pass
t = li[0]
for i in range(1, N):
li[i] += li[i-1]
if(li[i] > t):
t = li[i]
return t
我的代码在某些测试用例中出现超时错误
【问题讨论】:
-
欢迎来到 StackOverflow。不幸的是,您的问题描述不完整。请告诉我们输入的数据格式(尤其是
queries)、该输入的限制、一些示例输入以及该输入所需的输出。阅读并关注How to create a Minimal, Complete, and Verifiable example。如果您提供了导致代码超时的测试用例之一,这将特别有帮助(但我知道这可能是不可能的)。 -
你确定 n 总是 >= 比倒数第二行中的 i
-
静态数组索引值太多了,你也需要重构你的代码和逻辑
-
for i in range(a-1, b): li[i] += c将此更改为for i in (a-1, b): li[i] += c您的代码将起作用 -
queries的一些示例值可以帮助人们回答您的问题。