python程序的执行时间

时间:2018-06-17 12:05:08

标签: python python-3.x

我在hackerrank中提交的大多数解决方案都会抛出超时错误, 所以我试图在我的电脑中找到sublime text 3中的一个代码的执行时间,并导致[完成220.5秒]输入200万输入。

问题陈述: https://www.hackerrank.com/challenges/py-the-captains-room/problem

我的解决方案:

n=int(input())
l_list=list(map(int,(input().split())))
l_set=set(l_list)
for i in l_set:
    c=l_list.count(i)
    if c==1:
        print(i)

请帮我优化代码或者我的系统太慢???

2 个答案:

答案 0 :(得分:0)

你的循环是O(n ^ 2),因为list.count是O(n)。创建集合也是可以跳过的O(n)操作。

你应该考虑尝试通过你的阵列一次并完成所有计数。现在你要浏览集合中的所有项目,并且对于每个项目l_list.count(i)一次通过列表,这会给你带来可怕的O(n ^ 2)性能。

我不想直接给你答案,因为这项任务是作为一种学习经历......

答案 1 :(得分:0)

我在下面的代码中遇到了同样的问题。

k=int(input())
a_list=list(input().split())
a_set=set(a_list)
for each in a_set:
    if(a_list.count(each)!=k):
        print(each)

诀窍是使用集合中的计数器。请参考下面的讨论 How to count the occurrences of a list item?