Menu
CoddyTech

Min Stack

MoyenPilepython iconjava iconcpp iconc iconjs icon+10

Conçois une pile qui, en plus des opérations habituelles push, pop et top, peut renvoyer la plus petite valeur qu’elle contient avec getMin. Chacune des quatre opérations doit s’exécuter en O(1).

Tu reçois les opérations dans l’ordre dans ops, avec args[i] contenant la valeur à empiler et 0 pour toutes les autres opérations. Exécute-les sur une seule pile initialement vide et renvoie une chaîne par opération : "null" pour push et pop, et le nombre sous forme de texte pour top et getMin.

Fonction

minStackOps(ops: string-array, args: integer-array) → string-array
opsstring-array
les opérations, dans l’ordre où elles s’exécutent
argsinteger-array
la valeur pour chaque opération push, 0 pour toutes les autres opérations
Renvoiestring-array
une réponse par opération, sous forme de texte

Contraintes

  • 1 ≤ ops.length ≤ 3000
  • args.length == ops.length
  • Chaque ops[i] est push, pop, top ou getMin.
  • -231+1 ≤ args[i] ≤ 231-1 pour une opération d’ajout, et args[i] == 0 pour toute autre opération.
  • pop, top et getMin ne sont appelés que lorsque la pile contient au moins une valeur.

Exemples

Entrée
ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]args = [4, 1, 7, 0, 0, 0, 0, 0]
Sortie
["null", "null", "null", "1", "null", "1", "null", "4"]
Explication
La pile contient 4, 1 et 7 du bas vers le haut, donc le plus petit est 1. Retirer 7 laisse 1 au sommet. Retirer aussi 1 ne laisse que 4, donc le minimum repasse à 4.

lock icon+16 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu créer une file premier entré, premier sorti qui indique également son minimum en temps amorti O(1) ?

Réinitialiser le code
def minStackOps(ops, args):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]
args = [4, 1, 7, 0, 0, 0, 0, 0]

Attendu

["null", "null", "null", "1", "null", "1", "null", "4"]