题目描述:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。

  • void push(int val) 将元素val推入堆栈。

  • void pop() 删除堆栈顶部的元素。

  • int top() 获取堆栈顶部的元素。

  • int getMin() 获取堆栈中的最小元素。

方法1:使用两个栈,一个常规栈,一个不断记录插入最小元素的栈

public:
    stack<int>stk;
    stack<int>min;//存放最小值的栈
    MinStack() {
        
    }

    void push(int val) {
        stk.push(val);
        if(min.empty()) min.push(val);
        else{
            if(val <= min.top()) min.push(val);
        }
    }

    void pop() {
        if(stk.top() == min.top()) min.pop();
        stk.pop();
    }

    int top() {
        return stk.top();
    }
    
    int getMin() {
        return min.top();
    }
};