Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 运行时间太长_Python - Fatal编程技术网

Python 运行时间太长

Python 运行时间太长,python,Python,当我用代码测试它时,没有错误,但超时失败。 问题 故障率定义如下。 球员人数/舞台上的球员人数 总共N个阶段,游戏当前可由用户停止 限制 阶段数N是1或更多、500或更少的自然数。 舞台长度为1或更长,200000或更短。 包含步骤1以上和N+1以下的天然水。 每个自然数目前都受到用户的质疑。 N+1是最后阶段。 故障率仍然存在。 该阶段的成功率为零 我的代码 def solution(N, stages): fail = [] for i in range(1,N+1):

当我用代码测试它时,没有错误,但超时失败。

问题

故障率定义如下。 球员人数/舞台上的球员人数 总共N个阶段,游戏当前可由用户停止

限制

阶段数N是1或更多、500或更少的自然数。 舞台长度为1或更长,200000或更短。 包含步骤1以上和N+1以下的天然水。 每个自然数目前都受到用户的质疑。 N+1是最后阶段。 故障率仍然存在。 该阶段的成功率为零

我的代码

def solution(N, stages):
    fail = []
    for i in range(1,N+1):
        no_clear = stages.count(i)
        he_stage = sum([stages.count(x) for x in range(i,N+2)])
        if no_clear==0: 
            fail.append((i,0))
        else: 
            fail.append((i,no_clear/he_stage))
    fail=sorted(fail,key=lambda x: (-x[1],x[0]))
    print(fail)
    return [fail[i][0] for i in range(N)]

我想
stages
是一个
列表
。在
列表上重复调用
count
具有非常高的复杂性,特别是在循环中这样做时

您可以使用缓存或更简单的方法:通过对象调用替换
stages.count(x)

之前:

def solution(N, stages):
    fail = []
    for i in range(1,N+1):
        no_clear = stages.count(i)
        he_stage = sum([stages.count(x) for x in range(i,N+2)])
之后:

import collections
def solution(N, stages):
   fail = []
   stages_counter = collections.Counter(stages)
   for i in range(1,N+1):
       no_clear = stages_counter[i]
       he_stage = sum(stages_counter[x] for x in range(i,N+2))

这将大大降低您的复杂性。元素被一次性计数。完成后,只需在
O(1)
时间访问字典。

非常感谢。没有解释,非常感谢您真诚的回答!!!问题解决了。