Ctrl K
Курс · шаг 34 из 79К шагуДальше

Сколько ждать подорожания

Средняя
Магазин записывает цену товара в конце каждого дня: prices[i] — цена в день i. Для каждого дня выясните, сколько дней придётся подождать, пока цена станет строго выше, чем в этот день. Верните список той же длины, где i-й элемент — это число дней от дня i до ближайшего более позднего дня с более высокой ценой. Если такого дня нет, поставьте 0. Сравнить каждый день со всеми следующими — это O(n²). Попробуйте за O(n).
Пример 1
prices=[50, 45, 47, 60, 58] → [3, 1, 1, 0, 0]

После 50 цена впервые выше через 3 дня (60). После 45 — уже на следующий день (47), после 47 — тоже (60). Ни 60, ни 58 больше не превзойдены.

Пример 2
prices=[70, 70, 71] → [2, 1, 0]

Равная цена не считается более высокой: от первого 70 до 71 два дня.

Пример 3
prices=[90, 80, 30] → [0, 0, 0]
Ограничения
  • 1 ≤ len(prices) ≤ 10⁵
  • 1 ≤ prices[i] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПрямой обход дерева поиска СредняяНиз, пик и середина СредняяСледующее большее по кругу СредняяПерестроить середину шеренги СредняяДерево из вершин-максимумов Средняя
загружаем Python…
Вход
prices=[50, 45, 47, 60, 58]
Ожидается
[3, 1, 1, 0, 0]

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