155 Min Stack

https://leetcode.com/problems/min-stack/

这道题不需要像max stack一样维护tree map和自定义queue,只需要在每个node里记录当前的min val,主要的区别在于所需要的api,它不像max stack一样有popMax的方法,也就不需要在短时间内找到并remove掉max node

class MinStack {
    class Node {
        int val;
        int minVal;
        Node(int v, int mv) {
            this.val = v;
            this.minVal = mv;
        }
    }
    Deque<Node> stack = new ArrayDeque<>();
    public MinStack() {
        
    }
    
    public void push(int val) {
        if (stack.isEmpty()) {
            stack.push(new Node(val, val));
        } else {
            int minVal = stack.peek().minVal;
            stack.push(new Node(val, Math.min(minVal, val)));
        }
    }
    
    public void pop() {
        stack.pop();
    }
    
    public int top() {
        return stack.peek().val;
    }
    
    public int getMin() {
        return stack.peek().minVal;
    }
}

/**
 * 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();
 */

Last updated