Menu
CoddyTech

Implement Queue Using Stacks

FacileCodaStackpython iconjava iconcpp iconc iconjs icon+10

Costruisci una coda FIFO la cui unica struttura di archiviazione sia costituita da due pile. Una pila può solo aggiungere un elemento in cima, rimuovere l’elemento in cima, leggere l’elemento in cima e indicare se è vuota. La coda supporta push x (aggiunge x in fondo), pop (rimuove e restituisce l’elemento in testa), peek (restituisce l’elemento in testa) e empty (la coda è vuota?).

Ricevi le operazioni in ordine come ops, con args[i] che contiene il valore per un’operazione push e 0 per ogni altra operazione. Esegui le operazioni su un’unica coda inizialmente vuota e restituisci una stringa per ogni operazione: "null" per un’operazione push, il numero come testo per un’operazione pop o peek e "true" oppure "false" per empty.

Funzione

queueOps(ops: string-array, args: integer-array) → string-array
opsstring-array
le operazioni, nell'ordine in cui vengono eseguite
argsinteger-array
il valore per ogni push, 0 per ogni altra operazione
Restituiscestring-array
una risposta per operazione, come testo

Vincoli

  • 1 ≤ ops.length ≤ 2000
  • args.length == ops.length
  • Ogni ops[i] è push, pop, peek o empty.
  • -109 ≤ args[i] ≤ 109 per un'operazione di inserimento, e args[i] == 0 per qualsiasi altra operazione.
  • pop e peek vengono chiamate solo quando la coda contiene almeno un elemento.

Esempi

Input
ops = ["push", "push", "peek", "pop", "empty"]args = [1, 2, 0, 0, 0]
Output
["null", "null", "1", "1", "false"]
Spiegazione
Dopo aver inserito 1 e poi 2, il fronte è 1, quindi peek e pop restituiscono entrambi "1". Il 2 è ancora all'interno, quindi empty restituisce "false".

lock icon+15 test nascosti all’invio

challenge icon

Per approfondire

Come aggiungeresti un'operazione back che restituisce l'elemento più recente in O(1), senza compromettere il limite ammortizzato delle altre?

Ripristina il codice
def queueOps(ops, args):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

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