【37】 Pila mínima (LC 155)

Pila mínima

Descripción del problema

Diseñe una pila que admita operaciones push, pop, top y pueda recuperar el elemento más pequeño en un tiempo constante.

push (x) -Presione el elemento x en la pila.
pop () —— Elimina el elemento en la parte superior de la pila.
top (): obtiene el elemento superior de la pila.
getMin (): recupera el elemento más pequeño de la pila.

respuesta

Pensé que el tema era implementar una pila con una estructura de datos básica, así que usé una matriz para lograr:

class MinStack {
    
    
    int cur = -1 ;
    int minnum = Integer.MAX_VALUE ;
    int a[] = new int[100000];
    /** initialize your data structure here. */
    public MinStack() {
    
    

    }
    
    public void push(int x) {
    
    
        cur++;
        a[cur]=x;
        if(x<minnum)
            minnum = x;
    }
    
    public void pop() {
    
    //时间复杂度:O(n)
        cur--;
        if(a[cur+1] == minnum){
    
    //如果出栈的数是最小值,则重新找最小值
            minnum = Integer.MAX_VALUE;
            for(int i=0;i<=cur;i++){
    
    
                if(a[i]<minnum)
                    minnum = a[i];
            }
        }
    }
    
    public int top() {
    
    
        return a[cur];
    }
    
    public int getMin() {
    
    
        return minnum;
    }
}

Después de leer la solución oficial, descubrí que se usó la pila auxiliar:

class MinStack {
    
    
    Deque<Integer> xStack;
    Deque<Integer> minStack;

    public MinStack() {
    
    
        xStack = new LinkedList<Integer>();
        minStack = new LinkedList<Integer>();
        minStack.push(Integer.MAX_VALUE);
    }
    
    public void push(int x) {
    
    
        xStack.push(x);
        minStack.push(Math.min(minStack.peek(), x));
    }
    
    public void pop() {
    
    
        xStack.pop();
        minStack.pop();
    }
    
    public int top() {
    
    
        return xStack.peek();
    }
    
    public int getMin() {
    
    
        return minStack.peek();
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_43424037/article/details/113786025
Recomendado
Clasificación