Menu
CoddyTech

Min Stack

MedioPilapython iconjava iconcpp iconc iconjs icon+10

Diseña una pila que, además de las operaciones habituales push, pop y top, pueda indicar el valor más pequeño que contiene con getMin. Cada una de las cuatro operaciones debe ejecutarse en tiempo O(1).

Recibes las operaciones en orden como ops, y args[i] contiene el valor para una operación push y 0 para cualquier otra operación. Ejecútalas en una sola pila que empieza vacía y devuelve una cadena por operación: "null" para push y pop, y el número como texto para top y getMin.

Función

minStackOps(ops: string-array, args: integer-array) → string-array
opsstring-array
las operaciones, en el orden en que se ejecutan
argsinteger-array
el valor de cada operación push, 0 para todas las demás operaciones
Devuelvestring-array
una respuesta por operación, como texto

Restricciones

  • 1 ≤ ops.length ≤ 3000
  • args.length == ops.length
  • Cada ops[i] es push, pop, top o getMin.
  • -231+1 ≤ args[i] ≤ 231-1 para una operación de inserción, y args[i] == 0 para cualquier otra operación.
  • pop, top y getMin solo se llaman cuando la pila contiene al menos un valor.

Ejemplos

Entrada
ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]args = [4, 1, 7, 0, 0, 0, 0, 0]
Salida
["null", "null", "null", "1", "null", "1", "null", "4"]
Explicación
La pila contiene 4, 1 y 7 de abajo hacia arriba, así que el menor es 1. Sacar 7 deja 1 arriba. Sacar también 1 deja solo 4, así que el mínimo vuelve a ser 4.

lock icon+16 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Puedes crear una cola de primero en entrar, primero en salir que también informe de su mínimo en tiempo O(1) amortizado?

Restablecer código
def minStackOps(ops, args):
    # Escribe el código aquí
Casos de prueba

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"]