class MinStack
{
public:
MinStack()
{
}
void push(int val)
{
//当两个栈:st minst都是刚开始的时候为空的话,都先入一个元素
st.push(val);
if(minst.empty()||val<=minst.top())// 入val:(1)如果最小栈为空:入val(2)当入栈的val <= minst栈顶的最小值(注意val==minst.top()也要入栈!!!)
{
minst.push(val);
}
}
void pop()
{
//st.pop();// 这个表达式一定要在判断的后面!!!如果你都删完了,我还怎么判断?
if(minst.top()==st.top())
{
minst.pop();
}
st.pop();
}
int top()
{
return st.top();
}
int getMin()
{
return minst.top();
}
stack<int> st;
stack<int> minst;
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/