Ctrl K

Сколько шагов карусели до порядка

Лёгкая
На кольцевой ленте багажной карусели стоят n коробок с разными номерами: labels[i] — номер коробки на месте i (места нумеруются с нуля). За один шаг лента сдвигается: каждая коробка переезжает с места i на место i + 1, а коробка с последнего места n - 1 попадает на место 0. Верните наименьшее число шагов, после которого номера коробок идут строго по возрастанию от места 0 к месту n - 1. Если этого не добиться никаким числом шагов, верните -1. Гарантируется, что если коробки ещё не стоят по возрастанию, то номер на последнем месте меньше номера на месте 0.
Пример 1
labels=[7, 9, 2, 4] → 2

После первого шага: [4, 7, 9, 2], после второго: [2, 4, 7, 9] — по возрастанию.

Пример 2
labels=[3, 8, 12] → 0

Коробки уже стоят по возрастанию, крутить ленту не нужно.

Пример 3
labels=[6, 1, 7, 2] → -1

Порядок нарушен в двух местах (6 > 1 и 7 > 2), а сдвиг ленты не меняет циклический порядок коробок — ответ -1.

Ограничения
  • 1 ≤ len(labels) ≤ 100
  • 1 ≤ labels[i] ≤ 100
  • Все номера в labels различны
  • Если labels не отсортирован, то labels[n - 1] < labels[0]
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПара с заданной суммой ЛёгкаяСжать повторы в отсортированном массиве ЛёгкаяВыкинуть лишнее значение ЛёгкаяМесто на отсортированной полке ЛёгкаяПрибавить единицу к числу из цифр Лёгкая
загружаем Python…
Вход
labels=[7, 9, 2, 4]
Ожидается
2

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