Нашли ошибку?

Сдвинутое расписание

СложнаяРеализацияГлава 1

#бинарный поиск#модификация алгоритмаid: ga-rotated-schedule

Отправления поездов за сутки записаны по возрастанию (в минутах от полуночи), но список начинается не с полуночи, а с текущего момента. Получается отсортированный список, циклически сдвинутый на неизвестное число позиций. Напишите find_departure(times, target): функция возвращает индекс target или -1 за O(log n).

Примеры

times = [900, 1020, 1300, 15, 240, 600]   # сдвиг на 3 позиции
find_departure(times, 240)   # 4
find_departure(times, 1020)  # 1
find_departure(times, 700)   # -1

Ограничения

Решение

def find_departure(times: list[int], target: int) -> int:
    """Индекс target в циклически сдвинутом отсортированном списке или -1."""
    # ваш код
    raise NotImplementedError

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 rotated_schedule.py — тесты те же, результат покажет ✓ / ✗ и итог.