[Sword Finger 30] Una pila que contiene la función mínima

Método 1: Pila mínima de simulación de doble pila: tiempo O (1), espacio O (n)

responder:

  1. Para garantizar que la complejidad de tiempo de push (), pop (), min () y otras funciones sean todas O (1), gestionamos una pila mínima dedicada a almacenar el valor más pequeño en la pila actual.
  2. push (): empujar directamente en la pila, min stack: juzgar el tamaño del elemento superior de la pila y el elemento insertado, si el elemento insertado es más pequeño o igual, insértelo
  3. pop (): elimina directamente la pila push, pila mínima: determina si el elemento superior de la pila es el mismo que el elemento eliminado por la pila push, elimina si es el mismo
    Inserte la descripción de la imagen aquí
class MinStack {
    
    
    private:
    stack<int> push_stc;
    stack<int> min_stc;
public:
    /** initialize your data structure here. */
    MinStack() {
    
    

    }
    
    void push(int x) {
    
    
        push_stc.push(x);
        if (min_stc.empty() || min_stc.top() >= x)
        {
    
    
            min_stc.push(x);
        }
    }
    
    void pop() {
    
    
        if (push_stc.empty())
            return;
        if (push_stc.top() == min_stc.top())
            min_stc.pop();
        push_stc.pop();
    }
    
    int top() {
    
    
        if (push_stc.empty())
            return -1;
        return push_stc.top();
    }
    
    int min() {
    
    
        if (min_stc.empty())
            return -1;
        return min_stc.top();
    }
};

Supongo que te gusta

Origin blog.csdn.net/qq_45691748/article/details/113867643
Recomendado
Clasificación