Menu
CoddyTech

Stock Span Problem

Vous obtenez le cours de clôture d’une action pour chaque jour : prices[i] est le cours du jour i. La durée du jour i est le nombre de jours consécutifs, se terminant au jour i inclus, pendant lesquels le cours était inférieur ou égal à prices[i].

Retournez la durée de chaque jour, dans le même ordre que prices. Chaque durée est d’au moins 1, car un jour compte toujours pour lui-même.

Fonction

stockSpan(prices: integer-array) → integer-array
pricesinteger-array
le prix de chaque jour, dans l’ordre
Renvoieinteger-array
la durée de chaque jour, dans le même ordre

Contraintes

  • 1 ≤ prices.length ≤ 104
  • 1 ≤ prices[i] ≤ 105
  • Une journée antérieure avec le même prix compte dans la période ; seul un prix strictement supérieur l’interrompt.

Exemples

Entrée
prices = [31, 27, 14, 21, 30, 18, 40]
Sortie
[1, 1, 1, 2, 4, 1, 7]
Explication
Le jour 3, à 21, remonte au-delà de 14 et s’arrête à 27 : portée de 2. Le jour 4, à 30, s’arrête à 31 : portée de 4. Le jour 6, à 40, dépasse tous les prix précédents et couvre les 7 jours.
challenge icon

Pour aller plus loin

Les prix arrivent maintenant un par un, et tu dois indiquer chaque intervalle au fur et à mesure qu’un prix arrive. Quelle approche fonctionne toujours, et que conserve-t-elle entre les appels ?

Réinitialiser le code
def stockSpan(prices):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

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

Résultat attendu

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