此代码在时间和空间上的复杂性(查找唯一性和重复项)是什么?
arr = [1,1,1,2,4,2,5]
a = []
d = []
for i in arr:
if i not in a:
a.append(i)
elif i in a:
d.append(i)
print(a)
print(d)
答案 0 :(得分:0)
您遍历arr
,这使O(N)
变得复杂。然后,检查i
中是否有a
,这又添加了N个操作。这使您的整体复杂度为O(N^2)
。
内存复杂度为O(N)
,因为您需要N个元素并将它们分布在2个数组之间。您不会创建任何新元素。
还有一个小注释:考虑使用else
代替elif i in a
,因为在这种情况下,它们的含义基本上相同。