Menu
CoddyTech

Implement Queue Using Stacks

FácilFilaPilhapython iconjava iconcpp iconc iconjs icon+10

Construa uma fila FIFO usando apenas duas pilhas como armazenamento. Uma pilha só pode adicionar um item no topo, remover o item do topo, ler o item do topo e informar se está vazia. A fila oferece push x (adicionar x ao final), pop (remover e retornar o primeiro item), peek (retornar o primeiro item) e empty (a fila está vazia?).

Você recebe as operações em ordem em ops, com args[i] contendo o valor de um push e 0 para todas as outras operações. Execute-as em uma única fila que começa vazia e retorne uma string por operação: "null" para um push, o número como texto para um pop ou peek e "true" ou "false" para empty.

Função

queueOps(ops: string-array, args: integer-array) → string-array
opsstring-array
as operações, na ordem em que são executadas
argsinteger-array
o valor de cada push, 0 para todas as outras operações
Retornastring-array
uma resposta por operação, como texto

Restrições

  • 1 ≤ ops.length ≤ 2000
  • args.length == ops.length
  • Cada ops[i] é push, pop, peek ou empty.
  • -109 ≤ args[i] ≤ 109 para uma operação de push, e args[i] == 0 para qualquer outra operação.
  • pop e peek só são chamados quando a fila contém pelo menos um item.

Exemplos

Entrada
ops = ["push", "push", "peek", "pop", "empty"]args = [1, 2, 0, 0, 0]
Saída
["null", "null", "1", "1", "false"]
Explicação
Depois de inserir 1 e então 2, o primeiro elemento é 1, então peek e pop retornam "1". O 2 ainda está dentro, então empty retorna "false".

lock icon+15 testes ocultos ao enviar

challenge icon

Para ir além

Como você adicionaria uma operação back que retorna o item mais recente em O(1), sem prejudicar o limite amortizado das outras?

Redefinir código
def queueOps(ops, args):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

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