Menu
CoddyTech

Stock Span Problem

Ottieni il prezzo di chiusura di un'azione per ogni giorno: prices[i] è il prezzo del giorno i. L'intervallo del giorno i è il numero di giorni consecutivi, fino al giorno i incluso, in cui il prezzo è stato minore o uguale a prices[i].

Restituisci l'intervallo di ogni giorno, nello stesso ordine di prices. Ogni intervallo è almeno 1, perché un giorno conta sempre sé stesso.

Funzione

stockSpan(prices: integer-array) → integer-array
pricesinteger-array
il prezzo di ogni giorno, in ordine
Restituisceinteger-array
nell'arco di ogni giornata, nello stesso ordine

Vincoli

  • 1 ≤ prices.length ≤ 104
  • 1 ≤ prices[i] ≤ 105
  • Un giorno precedente con lo stesso prezzo viene conteggiato nell’intervallo; solo un prezzo strettamente più alto lo interrompe.

Esempi

Input
prices = [31, 27, 14, 21, 30, 18, 40]
Output
[1, 1, 1, 2, 4, 1, 7]
Spiegazione
Il giorno 3, a 21, torna indietro oltre 14 e si ferma a 27: ampiezza 2. Il giorno 4, a 30, si ferma a 31: ampiezza 4. Il giorno 6, a 40, supera tutti i prezzi precedenti e copre tutti e 7 i giorni.
challenge icon

Per approfondire

I prezzi ora arrivano uno alla volta e devi comunicare ogni intervallo man mano che arriva il relativo prezzo. Quale approccio continua a funzionare e cosa conserva tra una chiamata e l’altra?

Ripristina il codice
def stockSpan(prices):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

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

Output atteso

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