Menu
CoddyTech

Min Stack

MédioPilhapython iconjava iconcpp iconc iconjs icon+10

Projete uma pilha que, além das operações usuais push, pop e top, possa informar o menor valor que contém com getMin. Cada uma das quatro operações deve ser executada em tempo O(1).

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

Função

minStackOps(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 ≤ 3000
  • args.length == ops.length
  • Todo ops[i] é push, pop, top ou getMin.
  • -231+1 ≤ args[i] ≤ 231-1 para um push, e args[i] == 0 para qualquer outra operação.
  • pop, top e getMin só são chamados quando a pilha contém pelo menos um valor.

Exemplos

Entrada
ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]args = [4, 1, 7, 0, 0, 0, 0, 0]
Saída
["null", "null", "null", "1", "null", "1", "null", "4"]
Explicação
A pilha contém 4, 1 e 7, de baixo para cima, então o menor valor é 1. Remover 7 deixa 1 no topo. Remover 1 também deixa apenas 4, então o mínimo volta a ser 4.

lock icon+16 testes ocultos ao enviar

challenge icon

Para ir além

Você consegue criar uma fila do tipo primeiro a entrar, primeiro a sair que também informe seu mínimo em tempo amortizado O(1)?

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

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

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