class Solution {
public:
stack<int> stack,stackmin;//stackmin栈顶用于存放stack栈中最小值
void push(int value) {
stack.push(value);
if(stackmin.size()==0) stackmin.push(value);
else if(stackmin.top()>=value) stackmin.push(value);
else if(stackmin.top()<value) stackmin.push(stackmin.top());
//这里利用了栈后进先出的思想,stackmin栈顶记录的是当前栈长下栈的最小值,所以如果有新数进栈,只要确保stackmin存的是当前栈高度下的最小值就ok,即便stack出栈也是相应弹出stackmin的栈顶,确保时刻stackmin都是stack的最小值
}
void pop() {
stack.pop();
stackmin.pop();
}
int top() {
return stack.top();
}
int min() {
return stackmin.top();
}
};