[英]Can someone help me in optimising the below python code, I am getting timeout exception for some of the test cases
有人可以帮我优化下面的代码。
power = [2,3,2,1]
noElement = len(power)
result = 0
for i in range(noElement):
sum = 0
minEleme = float('inf')
for j in range(i, noElement):
minEleme = min(minEleme,power[j])
sum+=power[j]
result += (minEleme*sum)%1000000007
print("min : ",minEleme,"sum : ",sum,"result : " ,result)
print(result)
问题:一家公司有n台服务器。 第 i 个服务器的功率是 power[i]。 一组连续服务器 [l,r] 的功率可以计算为
找到所有可能的连续服务器组的幂的总和。根据输入值,答案可能很大,因此返回答案模 1000000007
1<= n <= 8*100000
1<= 幂[i] <= 1000000000
示例:power=[2,3,2,1]
Power[0,0] => min([2]) * sum([2]) => 2 * 2 = 4.
Power[0,1] => min([2,3]) * sum([2,3]) => 2 * (2+3) = 10
Power[0,2] = 14
Power[0,3] = 8
Power[1,2] = 10
Power[1,3] = 6
Power[2,2] = 4
Power[2,3] = 3
Power[3,3] = 1
幂和 = 69。返回 69%1000000007。
鉴于作为问题的一部分给出的公式(在图像中),答案不是简单的:
def group_power(power, l, r):
return min(power[l:r+1]) * sum(power[l:r+1])
answer = group_power(power=[2,3,2,1], l=1, r=3)
print(answer)
从您共享的代码中不清楚l
和r
甚至进入其中,您只是共享了一小部分power
。 我看不出这会如何发生超时。
从您的评论来看,您似乎想要每个可能范围的组幂的总和,然后您想要结果以某个值为模:
def group_power_calc(power, modulo):
return sum(
min(power[l:r+1]) * sum(power[l:r+1])
for l in range(len(power))
for r in range(l, len(power))
) % modulo
answer = group_power_calc(power=[2, 3, 2, 1], modulo=1000000007)
print(answer)
结果:
69
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.