列表和整数集之间的差异,以提高时间效率

时间:2017-12-19 06:50:46

标签: python python-3.x

此代码可以有效地工作,但如果我用注释行替换这两行(将值赋给AB),则需要花费更多时间来传递某些测试用例。 约束:n,m in range(10^5),arr中的任何整数都在range(10^9)中 请解释一下。

n, m = input().split()
arr=list(map(int,input().split()))
A = set(map(int,input().split()))  #list(map(int,input().split()))
B = set(map(int,input().split()))  #list(map(int,input().split()))
count=0
for i in range(len(arr)):
    if arr[i] in A:
        count+=1
    elif arr[i] in B:
        count+=-1
print(count)

1 个答案:

答案 0 :(得分:0)

list中查找时间是O(N),set中的查找时间是O(1)。

要检查某个元素是否包含在list中,必须检查列表的每个元素,直到找到某个元素为止。这给出了与列表大小或O(N)成比例的查找时间。 set实现为散列表,效率更高,查找时间平均为O(1),或者查找时间不会随着set的大小增加而增加。