>>> a = [1,2,3,4,5]
>>> b = [1,3,5,6]
>>> list(set(a) & set(b))
[1, 3, 5]
不允许使用任何操作符或使用任何内置函数,如。intersect()我如何解决这个问题?
如果a
和b
已排序并且没有重复项,则可以:
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)
从a
和b
的开头开始搜索。因为如果a[i]
中的元素更大,它们就会排序,你应该检查b
中的下一个元素。如果b[j]
中的元素更大,那么你应该检查a中的下一个元素。如果它们相等,这意味着你找到了一个相交的元素,并从a
和b
的下一个元素继续。
我不确定我是否正确理解了这个问题,但从我读到的这是一个解决方案,排序或其他。
def intersect(a,b):
inters = []
for num in a:
for item in b:
if num == item:
inters.append(num)
return inters