Menu
CoddyTech

Implement Queue Using Stacks

FacileFilePilepython iconjava iconcpp iconc iconjs icon+10

Construisez une file FIFO dont le seul espace de stockage est constitué de deux piles. Une pile ne peut qu’ajouter un élément au sommet, retirer l’élément au sommet, lire l’élément au sommet et indiquer si elle est vide. La file prend en charge push x (ajouter x à la fin), pop (retirer et renvoyer l’élément en tête), peek (renvoyer l’élément en tête) et empty (la file est-elle vide ?).

Les opérations vous sont fournies dans l’ordre dans ops, et args[i] contient la valeur pour une opération push et 0 pour toutes les autres opérations. Exécutez-les sur une seule file initialement vide et renvoyez une chaîne pour chaque opération : "null" pour une opération push, le nombre sous forme de texte pour une opération pop ou peek, et "true" ou "false" pour une opération empty.

Fonction

queueOps(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 push, 0 pour toute autre opération
Renvoiestring-array
une réponse par opération, sous forme de texte

Contraintes

  • 1 ≤ ops.length ≤ 2000
  • args.length == ops.length
  • Chaque ops[i] est push, pop, peek ou empty.
  • -109 ≤ args[i] ≤ 109 pour une opération d’empilement, et args[i] == 0 pour toute autre opération.
  • On n’appelle pop et peek que lorsque la file contient au moins un élément.

Exemples

Entrée
ops = ["push", "push", "peek", "pop", "empty"]args = [1, 2, 0, 0, 0]
Sortie
["null", "null", "1", "1", "false"]
Explication
Après avoir empilé 1 puis 2, l’élément en tête est 1, donc peek et pop renvoient tous deux "1". Le 2 est toujours à l’intérieur, donc empty renvoie "false".

lock icon+15 tests cachés à la soumission

challenge icon

Pour aller plus loin

Comment ajouteriez-vous une opération back qui renvoie l’élément le plus récent en O(1), sans compromettre la borne amortie des autres ?

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

Cas 1

Cas 2

Cas 3

Entrée

ops = ["push", "push", "peek", "pop", "empty"]
args = [1, 2, 0, 0, 0]

Attendu

["null", "null", "1", "1", "false"]