Учитывая набор из п пар целых чисел, есть быстрый способ, чтобы определить, существует две пары (х , у) и (х , у) так, что пересечение множеств {х , у } и {х , х } пусто?Найти пару пар, без пересечения
Например, {(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 (N 2 ) времени. Можете ли вы получить что-то ближе к линейному времени?
Это звучит как вопрос, который вы должны задать в [cs.SE] (http://cs.stackexchange.com/). – Bakuriu
@Bakuriu Существует определенно перекрытие, но мне действительно нужен код, поэтому stackoverflow тоже подходит. – marshall