以下代码可解决hackerrank问题:(默认情况下,A和B将获得非重复和离散的数据)
n,m = map(int,input().split())
arr = list(map(int,input().split()))
A = set(map(int,input().split()))
B = set(map(int,input().split()))
count = 0
for x in arr:
if x in A:
count+=1
if x in B:
count-=1
print(count)
但是下一个显示了4个测试用例中的时间错误:
n,m = map(int,input().split())
arr = list(map(int,input().split()))
A = list(map(int,input().split()))
B = list(map(int,input().split()))
count = 0
for x in arr:
if x in A:
count+=1
if x in B:
count-=1
print(count)
时间复杂度如何在列表和集合中急剧变化,以及它们如何工作?
set
在Python中是使用哈希表实现的。
检查元素是否在集合中是一个O(1)
(即恒定时间)操作,并且此检查的执行时间不取决于集合中有多少个元素。
list
而是将其实现为数组,并检查元素是否存在要求列表中元素的数量O(n)
在哪里n
。如果列表中仅包含100个元素,则检查元素是否存在于包含1000个元素的列表中将花费十倍的时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句