我有问题的二次解决方案如下:
A = [12, 45, 23, 50, 87, 57]
B = [32, 10, 12, 57, 34, 99]
for i in range(len(A)):
for j in range(len(B)):
if A[i] == B[j]:
print(A[i])
这当然是O(N^2)
。
我想到的另一个解决方案是排序列表B
,O(n*log(n))
然后二进制搜索到B
是O(log(n))
,然后执行N
次A
中的所有项目。这是O(2*n*log(n)))
最糟糕的情况,但是w会丢弃2
,因为它是一个常数,我们有O(n*log(n))
。
这是对的吗?有没有办法进一步改善呢?