注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
思路:两个栈,一个栈保存所有元素,一个栈保存在添加元素过程中遇到的最小元素;
class Solution {
public:
void push(int value) {
if(s.empty())
{
s.push(value);
min_s.push(value);
}else{
if(value<min_s.top())
{
s.push(value);
min_s.push(value);
}else{
s.push(value);
}
}
}
void pop() {
if(!s.empty())
{
if(s.top()==min_s.top())
{
s.pop();
min_s.pop();
}
else{
s.pop();
}
}
}
int top() {
return s.top();
}
int min() {
return min_s.top();
}
private:
stack<int>s;
stack<int>min_s;
};