Volta.guideVolta.guide
Home
Introduzione
Materiale
Risorse
Algobadge
Home
Introduzione
Materiale
Risorse
Algobadge
  • Minimum Stack

Minimum Stack

Lo stack è una struttura dati della STL di tipo LIFO (i.e. Last-In, First-Out), che consente di aggiungere e rimuovere elementi solo dalla cima in O(1).

Vogliamo modificare lo stack in modo da riuscire a trovare anche il minimo in tempo costante. Per fare ciò memorizzeremo ogni elemento in coppie: l'elemento e il minimo nello stack a partire da questo.

Utilizzeremo quindi la seguente struttura dati:

stack<pair<int, int>> st;

Vediamo ora nel dettaglio le funzioni supportate.

Aggiungere un elemento

Per aggiungere un elemento basta aggiungere alla cima dello stack la seguente coppia: l'elemento che vogliamo aggiungere e il minimo nello stack.

void add(int x) {
    st.push({x, st.empty() ? x : min(x, st.top().second)});
}

Rimuovere un elemento

Per rimuovere un elemento possiamo semplicemente togliere quello in cima.

void remove() {
    st.pop();
}

Trovare il minimo

Il minimo nello stack è memorizzato nel secondo elemento della coppia in cima.

int min() {
    return st.top().second;
}
Last Updated:
Contributors: ciao-gio, nik-din