思路:利用两个栈,一个是存储所有元素的栈st,另一个是入栈到st的元素为最小时存储的栈minst,push()中当第一次入栈时或者每入一个元素就判断如果minst的栈顶元素>=要入栈的元素,则将该元素入栈到minst
pop()当st的栈顶和minst栈顶相等时就弹出minst的栈顶元素,否则只弹出st的栈顶元素
class MinStack {
public:
MinStack() {
}
void push(int val) {
st.push(val);
if(minst.empty()||minst.top()>=val)
{
minst.push(val);
}
}
void 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;
};