Ctrl K

Срезать до одного уровня

Лёгкая
Есть ряд столбиков высотой heights[i]. Высота h считается **допустимой**, если все столбики выше h имеют одинаковую высоту. Например, для [10, 8, 10, 8] высота 9 допустима (выше неё только десятки), а 5 — нет. За один срез выбирается допустимая (для текущих высот) h, и каждый столбик выше h укорачивается до h. Верните наименьшее число срезов, после которого все столбики будут высоты ровно level, или -1, если это невозможно.
Пример 1
heights=[6, 3, 6, 4], level=3 → 2

Срезаем всё выше 4 до 4, затем всё выше 3 до 3 — два среза.

Пример 2
heights=[5, 2, 7], level=4 → -1

Столбик высотой 2 ниже уровня 4, а поднимать нельзя — ответ -1.

Пример 3
heights=[8, 8], level=1 → 1
Ограничения
  • 1 ≤ len(heights) ≤ 100
  • 1 ≤ heights[i] ≤ 100
  • 1 ≤ level ≤ 100
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПара с заданной суммой ЛёгкаяПобедитель с большинством голосов ЛёгкаяЕсть ли повтор ЛёгкаяПовтор в пределах окна ЛёгкаяПотерянный билет Лёгкая
загружаем Python…
Вход
heights=[6, 3, 6, 4], level=3
Ожидается
2

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