LeetCode剑指offer

发布时间 2023-03-22 21:16:55作者: 入出

剑指 Offer 30. 包含min函数的栈

https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/description/

class MinStack {
    // B用来存放每次输入时小于之前最小值的元素,当需要取最小值时,直接B.peek()即可
    // peek() 函数返回栈顶的元素,但不弹出该栈顶元素
    Stack<Integer> A,B;

    public MinStack() {
        A = new Stack<>();
        B = new Stack<>();
    }
    
    public void push(int x) {
        A.add(x);
        // 等号防止重复最小值被弹出
        if(B.isEmpty() || x <= B.peek())
            B.add(x);
    }
    
    public void pop() {
        if(A.pop().equals(B.peek()))
            B.pop();
    }
    
    public int top() {
        return A.peek();
    }
    
    public int min() {
        return B.peek();
    }
}