Ctrl K

Самый длинный маршрут по камням до каждой точки

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

Для камня с высотой 5 (индекс 4) подходит маршрут 2 → 3 → 5 или 2 → 4 → 5 — три камня. Камень высотой 1 в конце ниже всех предыдущих, поэтому маршрут к нему состоит из него одного.

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

Равные высоты можно ставить подряд: к последнему камню ведёт маршрут 6 → 6 → 6 длины 3.

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

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