class Solution {
public:
stack<int> s1;//保存数据用的栈
stack<int> s2;//保存最小的数的栈,其中它的栈顶始终为最小的数
void push(int value) {
s1.push(value);
if(s2.empty()) s2.push(value);//如果S2为空,则value是最小的值,入栈
else{
if(s2.top()>=value) s2.push(value);//否则当value小于等于s2的栈顶元素时,入栈(等于的时候也入栈是因为我考虑有相同的数)
}
}
void pop() {
if(s1.top()==s2.top())//如果出栈的数刚好是最小的数,那么s2页应该出栈
s2.pop();
s1.pop();
}
int top() {
return s1.top();//栈顶元素应返回s1的栈顶元素
}
int min() {
return s2.top();//s2的栈顶元素即是最小的数
}
};
public:
stack<int> s1;//保存数据用的栈
stack<int> s2;//保存最小的数的栈,其中它的栈顶始终为最小的数
void push(int value) {
s1.push(value);
if(s2.empty()) s2.push(value);//如果S2为空,则value是最小的值,入栈
else{
if(s2.top()>=value) s2.push(value);//否则当value小于等于s2的栈顶元素时,入栈(等于的时候也入栈是因为我考虑有相同的数)
}
}
void pop() {
if(s1.top()==s2.top())//如果出栈的数刚好是最小的数,那么s2页应该出栈
s2.pop();
s1.pop();
}
int top() {
return s1.top();//栈顶元素应返回s1的栈顶元素
}
int min() {
return s2.top();//s2的栈顶元素即是最小的数
}
};