155. 最小栈

2021-09-02  本文已影响0人  justonemoretry
image.png

解法

class MinStack {

    Stack<Integer> dataStack;
    // 辅助栈,栈顶保存最小元素,对应正常数据栈顶
    Stack<Integer> minStack;
    /** initialize your data structure here. */
    public MinStack() {
        dataStack = new Stack<>();
        minStack = new Stack<>();
        minStack.push(Integer.MAX_VALUE);
    }
    
    public void push(int val) {
        dataStack.push(val);
        minStack.push(Math.min(minStack.peek(), val));
    }
    
    public void pop() {
        dataStack.pop();
        // 这里也正常弹出,最小元素和之前栈中元素位置对应
        minStack.pop();
    }
    
    public int top() {
        return dataStack.peek();
    }
    
    public int getMin() {
        return minStack.peek();
    }
}

/**
 * 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();
 */
上一篇下一篇

猜你喜欢

热点阅读