擅长:python、mysql、java
<p>如果你想要最快的解决方案,它就不会很简洁。这里的尝试是最坏情况O(A+B),但是一旦找到两个匹配项就会退出,并且是最佳情况Ω(B),其中B是两个列表中的较短者。你知道吗</p>
<pre><code>def check_common_items(A, B, n=2):
# set B to be the shorter list, len is O(1)
if len(B) < len(A):
A, B = B, A
B_set = set(B) # O(len(B))
count = 0
for a in A: # worst case O(len(A))
if a in B_set: # O(1)
count += 1
if count == n:
return True
return False
</code></pre>
<p>然而,大多数使用集合的实现将是渐近有效的。例如,下面的函数可能不会太慢。你知道吗</p>
<pre><code>def check_common_items(A, B, n=2):
return len(set(A) & set(B)) >= n
</code></pre>