Menu
CoddyTech

Stock Span Problem

Для каждого дня вам дана цена закрытия акции: prices[i] — цена акции в день i. Период для дня i — это количество последовательных дней, заканчивающихся днем i и включая его, в течение которых цена была меньше или равна prices[i].

Верните периоды для каждого дня в том же порядке, что и prices. Каждый период не меньше 1, потому что день всегда учитывается сам.

Функция

stockSpan(prices: integer-array) → integer-array
pricesinteger-array
цена за каждый день по порядку
Возвращаетinteger-array
период каждого дня, в том же порядке

Ограничения

  • 1 ≤ prices.length ≤ 104
  • 1 ≤ prices[i] ≤ 105
  • Более ранний день с такой же ценой учитывается в диапазоне; только строго более высокая цена прерывает его.

Примеры

Ввод
prices = [31, 27, 14, 21, 30, 18, 40]
Вывод
[1, 1, 1, 2, 4, 1, 7]
Пояснение
День 3 на отметке 21 возвращается назад через 14 и останавливается на 27: диапазон 2. День 4 на отметке 30 останавливается на 31: диапазон 4. День 6 на отметке 40 превосходит все предыдущие цены и охватывает все 7 дней.
challenge icon

Дополнительный вопрос

Теперь цены поступают по одной, и вы должны сообщать о каждом промежутке по мере поступления цены. Какой подход по-прежнему работает и что он сохраняет между вызовами?

Сбросить код
def stockSpan(prices):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

prices = [31, 27, 14, 21, 30, 18, 40]

Ожидаемый вывод

[1, 1, 1, 2, 4, 1, 7]