【问题标题】:Array Manipulation Hackerrank terminated due to timeout in python由于 python 中的超时,数组操作 Hackerrank 终止
【发布时间】:2018-08-17 11:49:11
【问题描述】:

如何优化以下代码? 正确的问题在这里: https://www.hackerrank.com/challenges/crush/problem

if __name__=='__main__':
    n, m = map(int, input().split())
    list=[0]*n
    for _ in range(m) :
        a, b, k = map(int, (input().split()))
        for i in range(a-1, b):
            list[i]+=k
    list.sort();
    print(list[-1])

【问题讨论】:

  • 除了你的input函数没有提示信息外,你的代码到底有什么问题?
  • 我发现了类似的问题here。这可能有助于您理解逻辑。

标签: arrays python-3.x


【解决方案1】:

这可以进一步优化以在 O(m logm) 时间内运行,因为我们必须仅在索引处检查前缀总和的值。

if __name__=='__main__':
    n, m = map(int, input().split())
    list=[0]*(n+1)
    for _ in range(m) :
        a, b, k = map(int, (input().split()))
        list[a-1]=list[a-1]+k
        list[b] = list[b] - k;

    for i in range(1,n):
        list[i]+=list[i-1]
    print(max(list))

【讨论】:

    猜你喜欢
    • 2018-10-22
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多