Ctrl K

Террасы в одну сторону

Сложная
На склоне в ряд идут участки, высота i-го — heights[i]. За один шаг можно поднять или опустить любой участок ровно на 1. Нужно, чтобы ряд высот стал монотонным: либо неубывающим (каждый следующий участок не ниже предыдущего), либо невозрастающим (каждый следующий не выше). Какое направление выбрать — решать вам. Верните наименьшее число шагов.
Пример 1
heights=[4, 1, 3, 2] → 2

Поднимаем второй участок с 1 до 2 и опускаем третий с 3 до 2: получается [4, 2, 2, 2], высоты не растут. Всего 2 шага.

Пример 2
heights=[2, 6, 3, 8] → 3

Опускаем 6 до 3: [2, 3, 3, 8] не убывает. Это 3 шага, быстрее не выйдет.

Пример 3
heights=[9, 9, 5, 0] → 0

Высоты уже не растут, ничего менять не нужно.

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

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