gpt4 book ai didi

python - 优化python中的程序

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:07 25 4
gpt4 key购买 nike

我正在尝试在 HackerRank 上解决这个问题:

Animesh has N empty candy jars numbered from 1 to N with infinite capacity. He performs M operations. Each operation is described by 3 integers a, b and k where a and b are index of >the jars and k is the number of candies to be added inside each jar with index between a and >b (both inclusive). Can you tell the average number of candies after M operations? I have written the below code in Python 3:

def operate(a, b, k, array):
for i in range(a - 1, b):
array[i] += k
def mean(array):
return int(sum(array) / len(array))
splitinput = [int(x) for x in input().split()]
candy = []
for i in range(splitinput[0]):
candy.append(0)
for j in range(splitinput[1]):
splitinput2 = input().split()
operate(int(splitinput2[0]), int(splitinput2[1]), int(splitinput2[2]), candy)
print(mean(candy))

它有效,但在某些测试用例上超时。我怎样才能使它更快?我用 Python 编写代码已有一段时间了,但我仍然没有找到更精细的优化点。

最佳答案

你不关心糖果在哪里。只要知道有多少糖果和多少 jar ,就可以计算均值。因此,您可以只计算所有糖果的数量:

jars, ops = map(int, input().split())
candies = 0
for i in range(ops):
a, b, k = map(int, input().split())
candies += k*(b-a+1)
print candies / jars

这避免了必须跟踪 N 个单独的计数或为每个操作递增 k 个计数器。当您获得较大的 k 值时,这非常重要。

关于python - 优化python中的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21715329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com