Categorías
Algorithms

LeetCode – Pila mínima (Java)

Diseñe una pila que admita push, pop, top y recuperación del elemento mínimo en un tiempo constante.

push (x): empuja el elemento x hacia la pila.
pop (): elimina el elemento en la parte superior de la pila.
top (): obtiene el elemento superior.
getMin (): recupera el elemento mínimo de la pila.

Solución Java

Para hacer un tiempo constante de getMin (), necesitamos realizar un seguimiento del elemento mínimo para cada elemento en la pila. Defina una clase de elemento que contenga el valor del elemento, el valor mínimo y el puntero a los elementos que se encuentran debajo.

class Elem{
    public int value;
    public int min;
    public Elem next;
 
    public Elem(int value, int min){
        this.value = value;
        this.min = min;
    }
}
 
public class MinStack {
    public Elem top;
 
    /** initialize your data structure here. */
    public MinStack() {
 
    }
 
    public void push(int x) {
        if(top == null){
            top = new Elem(x, x);
        }else{
            Elem e = new Elem(x, Math.min(x,top.min));
            e.next = top;
            top = e;
        }
 
    }
 
    public void pop() {
        if(top == null)
            return;
        Elem temp = top.next;
        top.next = null;
        top = temp;
 
    }
 
    public int top() {
        if(top == null)
            return -1;
        return top.value;
    }
 
    public int getMin() {
        if(top == null)
            return -1;
        return top.min;
    }
}
  Leetcode - Cruce de orden de árbol binario (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *