1、辅助栈
为了能够找到栈中的最小值,我们可以使用一个栈进行辅助,记录每次添加新元素之后当前栈中的最小值。
值得注意的是,我们同样可以使用vector来实现栈的功能。但是与栈相比,vector在插入和删除时的效率更差,因为它在分配新空间之后需要拷贝原先的所有元素。
class MinStack {
public:
stack<int> st;
stack<int> st_min;
MinStack() {
st_min.push(INT_MAX);
}
void push(int val) {
st.push(val);
st_min.push(min(st_min.top(), val));
}
void pop() {
st.pop();
st_min.pop();
}
int top() {
return st.top();
}
int getMin() {
return st_min.top();
}
};