思路:stack2为存放最小值的栈。stack1为输入的数据存放的栈,若新输入的值小于栈2栈顶元素,则将其存入栈2。
出栈的时候,若出栈元素与栈2栈顶元素相同,则同时出栈(因为栈2是辅助栈,实际上不应该真实存在)。
栈顶元素则输出栈1栈顶元素。
最小值则输出栈2栈顶元素。
class Solution {
public:stack<int> stack1,stack2;
void push(int value) {
stack1.push(value);
if(stack2.empty())
{
stack2.push(value);
}
else if(value<=stack2.top())
{
stack2.push(value);
}
}
void pop() {
if(stack1.top()==stack2.top())
{
stack2.pop();
}
stack1.pop();
}
int top() {
return stack1.top();
}
int min() {
return stack2.top();
}
};