Ctrl K

Цепочка из костяшек

Сложная
Дан набор костяшек tiles, каждая — пара чисел [left, right]. Костяшки нельзя переворачивать. Выложите все костяшки в одну цепочку так, чтобы правое число каждой костяшки совпадало с левым числом следующей за ней. Входные данные гарантируют, что такая цепочка существует и единственна, с одной оговоркой: если костяшки замыкаются в кольцо (правое число последней совпадает с левым числом первой), то начать можно с любого места — в этом случае цепочка должна начинаться с костяшки tiles[0]. Верните цепочку как список костяшек по порядку.
Пример 1
tiles=[[7, 2], [4, 7], [2, 9]] → [[4, 7], [7, 2], [2, 9]]

Цепочка 4→7, 7→2, 2→9: правое число каждой костяшки совпадает с левым числом следующей.

Пример 2
tiles=[[5, 8], [3, 5], [8, 3]] → [[5, 8], [8, 3], [3, 5]]

Костяшки замыкаются в кольцо 5→8→3→5, поэтому цепочка начинается с первой костяшки [5, 8].

Пример 3
tiles=[[1, 2], [2, 1], [1, 3]] → [[1, 2], [2, 1], [1, 3]]

Число 1 встречается слева дважды, а справа один раз, поэтому цепочка начинается с 1. Если сразу положить [1, 3], к тройке ничего не приставить, так что первой идёт [1, 2].

Ограничения
  • 1 ≤ len(tiles) ≤ 10⁵
  • 0 ≤ left, right ≤ 10⁹
  • left ≠ right
  • Одинаковых костяшек нет
  • Цепочка существует и единственна (с учётом правила для кольца)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиМаршрут по всем посадочным СложнаяВсе коды за один набор СложнаяПорядок букв по словарю СложнаяСамый длинный подъём по карте СложнаяШарик и лунка Сложная
загружаем Python…
Вход
tiles=[[7, 2], [4, 7], [2, 9]]
Ожидается
[[4, 7], [7, 2], [2, 9]]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 41 тест на сервере, включая скрытые.