假设有n个整数的配对集合,有没有一种快速的方法来确定是否存在两个配对(x1, y1)和(x2, y2),使得集合{x1, y1} 和{x2, x2}的交集为空?
例如,{(0,1), (0,2), (2,1), (3,2)}的答案为{(0,1), (3,2)}。但是{(0,1), (0,2), (2,1)}没有这样的一对配对。
在Python中,您可以尝试以下所有配对。
l = [(0,1), (0,2), (2,1), (3,2)]
print [pairs for pairs in itertools.combinations(l, 2)
if not (set(pairs[0]) & set(pairs[1]))]
这种方法需要O(n2)的时间。你能得到更接近线性时间的东西吗?