Ctrl K

Телепорты между одинаковыми клетками

Сложная
Дорожка состоит из клеток, на клетке i написано число marks[i]. Вы стоите на клетке 0 и хотите попасть на последнюю клетку. За один прыжок с клетки i можно переместиться: - на соседнюю клетку i + 1 или i - 1, если она существует; - на любую другую клетку j, где написано то же число: marks[j] == marks[i]. Выходить за пределы дорожки нельзя. Верните наименьшее число прыжков, за которое можно добраться до последней клетки.
Пример 1
marks=[3, 8, 5, 8, 1, 3, 2, 9, 8, 4] → 3

0 → 1 (сосед), 1 → 8 (на обеих клетках 8), 8 → 9 (сосед): три прыжка. За два прыжка до клетки 9 не добраться.

Пример 2
marks=[6, 2, 6, 2, 6] → 1

Первая и последняя клетки обе с числом 6 — хватает одного прыжка.

Пример 3
marks=[42] → 0

Мы уже стоим на последней клетке, прыгать не нужно.

Ограничения
  • 1 ≤ len(marks) ≤ 5 · 10⁴
  • -10⁸ ≤ marks[i] ≤ 10⁸
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиМеньше всего пересадок на шаттлах СложнаяСемейства слов на один обмен СложнаяКого вылечить первым СложнаяКого отключить от сети СложнаяПобег с огромного поля Сложная
загружаем Python…
Вход
marks=[3, 8, 5, 8, 1, 3, 2, 9, 8, 4]
Ожидается
3

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