Вы совершаете одностороннюю непрямую поездку, в которую входит миллиарды неизвестного очень большого количества переводов.
- Вы не останавливаетесь дважды в одном аэропорту.
- У вас есть 1 билет на каждую часть поездки.
- Каждый билет содержит src и dst аэропорт.
- Все билеты у вас отсортированы случайным образом.
- Вы забыли первоначальный аэропорт вылета (самый первый src) и ваш пункт назначения (последний dst).
Создайте алгоритм восстановления вашей поездки с минимальной сложностью <.
Пытаясь решить эту проблему, я начал использовать симметричную разницу двух наборов, Srcs и Dsts:
1) Сортировка всех ключей src в массиве Srcs
2) Сортировка всех ключей dst в массиве Dsts
3) Создайте набор объединений обоих массивов, чтобы найти не дубликаты - это ваш первый src и последний dst
4) Теперь, имея начальную точку, пройдите оба массива, используя двоичный поиск.
Но я полагаю, что должен быть еще один эффективный метод.