这道题的精华在于灵活的运用stl之栈💕💕
此题需要运用两个栈,一个存数据,另一个存小数。
push:当push的时候,st当然要push,但是minst是否要push有个条件:那就是minst为空或者minst的栈顶大于或等于这个要插入的值,其余的模块就比较容易实现了,下面把代码甩给大家
class MinStack {
public:
MinStack() {
}
void push(int val)
{
st.push(val);
if(minst.empty() || minst.top() >= val)
{
minst.push(val);
}
}
void pop()
{
if(st.top() == minst.top())
{
st.pop();
minst.pop();
}
else
{
st.pop();
}
}
int top()
{
return st.top();
}
int getMin() {
return minst.top();
}
stack<int> st;
stack<int> minst;
};