【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路
因为在我们每次插入和删除操作之后,整个栈内的元素最小值都有可能随之变化,我们必须要开一个辅助栈来记录栈内的最小值。
class Solution
{
public:
void push(int val)
{
S.push(val);
if(S_min.empty() || S_min.top()>val)
S_min.push(val);
}
void pop()
{
if(S.top() == S_min.top())
S_min.pop();
S.pop();
}
int top()
{
return S.top();
}
int min()
{
return S_min.top();
}
private:
stack<int> S;
stack<int> S_min;
};