具体思路同LeetCode-155。
1、辅助栈
为了能够获得在每次添加新元素之后当前栈的最小值,我们可以使用一个辅助栈来实现每次添加元素时记录下当前的最小值。我们在添加元素时,比较添加元素和辅助栈st_min栈顶元素的大小并将更小的元素入栈。而后在删除元素时我们也同时将st和st_min的栈顶元素一同出栈,最后实现要求效果。
class MinStack {
public:
stack<int> st;
stack<int> st_min;
MinStack() {
st_min.push(INT_MAX);
}
void push(int x) {
st.push(x);
st_min.push(std::min(st_min.top(), x));
}
void pop() {
st.pop();
st_min.pop();
}
int top() {
return st.top();
}
int min() {
return st_min.top();
}
};