数组操作Hackerrank因python超时而终止

时间:2018-08-17 11:49:12

标签: arrays python-3.x

如何优化以下代码? 正确的问题在这里: 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])

1 个答案:

答案 0 :(得分:0)

这可以进一步优化以在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))