本题目来自与牛客网。
解题思路:利用辅助栈来存储现有栈的最小值。在入栈和出栈的时候将现有栈和最小值栈进行比较。
入栈时,若新值比最小值栈的栈顶还小,则将该值同时push到最小值栈;出栈时,若现有栈的栈顶和最小值栈栈顶一致,则同时出栈,否则,仅仅现有栈pop;通过这一操作,最小值栈的栈顶将永远是现有栈元素中的最下值。
class Solution {
public:
stack<int> my_stack, min_stack;
void push(int value)
{
my_stack.push(value);
if (min_stack.size() == 0)
min_stack.push(value);
if (value < min_stack.top())
min_stack.push(value);
}
void pop()
{
if (my_stack.top() == min_stack.top())
{
my_stack.pop();
min_stack.pop();
}
else
my_stack.pop();
}
int top()
{
return my_stack.top();
}
int min()
{
return min_stack.top();
}
};