leetcode 力扣 155 最小栈

54 阅读1分钟

单个栈实现

算法思路\

  • 在进行push操作时,如果valmin还小,则先插入min,再插入val
  • 在进行pop操作时,如果栈顶元素是min,则同时删除上一代最小值,并更新min为上一代最小值

lc155_1.jpeg

lc155_2.jpeg

lc155_3.jpeg

class MinStack {

    private int min = Integer.MAX_VALUE;
    private Deque<Integer> stack = new LinkedList<>();

    public MinStack() {

    }

    public void push(int val) {
        if (val <= min) {
            stack.addFirst(min);
            min = val;
        }
        stack.addFirst(val);
    }

    public void pop() {
        if (stack.removeFirst() == min) {
            min = stack.removeFirst();
        }
    }

    public int top() {
        return stack.peekFirst();
    }

    public int getMin() {
        return min;
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(val);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.getMin();
 */