gpt4 book ai didi

python - 比较列表交集的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:13:55 24 4
gpt4 key购买 nike

我正在尝试设计一种算法来查找已排序数组和不同数组之间的共同元素。我正在使用以下两种方法之一。就运行时和时间复杂度而言,哪一个更好?

方法一:

# O(n^2) ?
common = []

def intersect(array1,array2):
dict1 = {}
for item in array1:
dict1.update({item:0})
for k,v in dict1.iteritems():
if k in array2:
common.append(k)
return common

print intersect(array1=[1,2,3,5], array2 = [5,6,7,8,9])

方法二:

# probably O(n^2)
common = []

def intersect(array1,array2):
for item1 in array1:
for item2 in array2:
if (item1==item2):
common.append(item1)
return common

print intersect(array1=[1,2,3,5], array2 = [5,6,7,8,9])

最佳答案

array1M 个元素,array2N 个元素。第一种方法的时间复杂度 O(M lg N)。第二种方法的时间复杂度为 O(M*N)。因此,从时间复杂度的角度来看,第一个更好。但是请注意,第一种方法的空间复杂度为 O(M),而第二种方法则没有。

顺便说一句,可能有一个O(max(M, N))算法。

关于python - 比较列表交集的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44093047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com