Menu
CoddyTech

Stock Span Problem

Você recebe o preço de fechamento de uma ação em cada dia: prices[i] é o preço no dia i. O intervalo do dia i é o número de dias consecutivos, terminando no dia i e incluindo-o, nos quais o preço foi menor ou igual a prices[i].

Retorne o intervalo de cada dia, na mesma ordem de prices. Todo intervalo é de pelo menos 1, pois um dia sempre conta a si mesmo.

Função

stockSpan(prices: integer-array) → integer-array
pricesinteger-array
o preço em cada dia, em ordem
Retornainteger-array
a extensão de cada dia, na mesma ordem

Restrições

  • 1 ≤ prices.length ≤ 104
  • 1 ≤ prices[i] ≤ 105
  • Um dia anterior com o mesmo preço conta para o período; somente um preço estritamente maior o interrompe.

Exemplos

Entrada
prices = [31, 27, 14, 21, 30, 18, 40]
Saída
[1, 1, 1, 2, 4, 1, 7]
Explicação
O dia 3, aos 21, recua até 14 e para em 27: amplitude 2. O dia 4, aos 30, para em 31: amplitude 4. O dia 6, aos 40, supera todos os preços anteriores e abrange os 7 dias.
challenge icon

Para ir além

Agora, os preços chegam um de cada vez, e você deve informar cada intervalo à medida que o preço chega. Qual abordagem ainda funciona e o que ela mantém entre as chamadas?

Redefinir código
def stockSpan(prices):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

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

Saída Esperada

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