Ctrl K

Ближайшие события в журнале

Средняя
Журнал действий пользователя log — список слов в порядке событий. Даны два слова left и right. Найдите минимальное расстояние между позициями записи left и записи right: расстояние между позициями i и j равно |i - j|. Слова left и right могут совпадать — тогда речь о двух **разных** записях с этим словом. Гарантируется, что нужные записи в журнале есть (при совпадении слов — не меньше двух).
Пример 1
log=["login", "view", "buy", "view", "logout"], left="buy", right="view" → 1

"buy" на позиции 2, "view" — на 1 и 3. Ближайшая пара на расстоянии 1.

Пример 2
log=["view", "buy", "login", "view", "view"], left="view", right="view" → 1

Слова совпадают, ищем две разные записи "view": позиции 3 и 4 стоят рядом.

Пример 3
log=["pay", "ship", "ship", "ship", "pay"], left="pay", right="pay" → 4

Две записи "pay" — на позициях 0 и 4, расстояние 4.

Ограничения
  • 1 ≤ len(log) ≤ 10⁵
  • 1 ≤ len(log[i]) ≤ 10
  • Слова состоят из строчных латинских букв
  • left и right есть в log; если они равны, слово встречается хотя бы дважды
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазложить анаграммы по группам СредняяСлово на сетке букв СредняяРазбиение на слова из словаря СредняяСамое большое число из кусков СредняяЧисла, которые не боятся переворота Средняя
загружаем Python…
Вход
log=["login", "view", "buy", "view", "logout"], left="buy", right="view"
Ожидается
1

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