如何在不使用in运算符或任何内置函数的情况下找到这两个集合的交集.我怎么解这个


>>> a = [1,2,3,4,5]
>>> b = [1,3,5,6]
>>> list(set(a) & set(b))
[1, 3, 5]

不允许使用任何操作符或使用任何内置函数,如。intersect()我如何解决这个问题?

如果ab已排序并且没有重复项,则可以:

i, j = 0, 0
intersection = []
while i < len(a) and j < len(b):
    if a[i] == b[j]:
        intersection.append(a[i])
        i += 1
        j += 1
    elif a[i] > b[j]:
        j += 1
    else:
        i += 1
print(intersection)

ab的开头开始搜索。因为如果a[i]中的元素更大,它们就会排序,你应该检查b中的下一个元素。如果b[j]中的元素更大,那么你应该检查a中的下一个元素。如果它们相等,这意味着你找到了一个相交的元素,并从ab的下一个元素继续。

我不确定我是否正确理解了这个问题,但从我读到的这是一个解决方案,排序或其他。

def intersect(a,b):
    inters = []
    for num in a:
        for item in b:
            if num == item:
                inters.append(num)
    return inters

最新更新