Menu
CoddyTech

Min Stack

MedioStackpython iconjava iconcpp iconc iconjs icon+10

Progetta una pila che, oltre alle consuete operazioni push, pop e top, possa restituire il valore più piccolo che contiene con getMin. Ciascuna delle quattro operazioni deve essere eseguita in tempo O(1).

Ricevi le operazioni in ordine come ops, con args[i] che contiene il valore per un'operazione push e 0 per ogni altra operazione. Eseguile su un'unica pila inizialmente vuota e restituisci una stringa per ogni operazione: "null" per push e pop, e il numero sotto forma di testo per top e getMin.

Funzione

minStackOps(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 ≤ 3000
  • args.length == ops.length
  • Ogni ops[i] è push, pop, top o getMin.
  • -231+1 ≤ args[i] ≤ 231-1 per un'operazione push, e args[i] == 0 per qualsiasi altra operazione.
  • pop, top e getMin vengono chiamate solo quando lo stack contiene almeno un valore.

Esempi

Input
ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]args = [4, 1, 7, 0, 0, 0, 0, 0]
Output
["null", "null", "null", "1", "null", "1", "null", "4"]
Spiegazione
Lo stack contiene 4, 1 e 7 dal basso verso l’alto, quindi il più piccolo è 1. Rimuovere 7 lascia 1 in cima. Rimuovere anche 1 lascia solo 4, quindi il minimo torna a 4.

lock icon+16 test nascosti all’invio

challenge icon

Per approfondire

Riesci a creare una coda FIFO che restituisca anche il suo minimo in tempo ammortizzato O(1)?

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

Caso 1

Caso 2

Caso 3

Input

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

Atteso

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