此代码可以有效地工作,但如果我用注释行替换这两行(将值赋给A
和B
),则需要花费更多时间来传递某些测试用例。
约束: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)
答案 0 :(得分:0)
在list
中查找时间是O(N),set
中的查找时间是O(1)。
要检查某个元素是否包含在list
中,必须检查列表的每个元素,直到找到某个元素为止。这给出了与列表大小或O(N)成比例的查找时间。 set
实现为散列表,效率更高,查找时间平均为O(1),或者查找时间不会随着set
的大小增加而增加。