// 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)
// 的时间复杂度为O(1)
// 定义两个栈分别为s1,s2。我们用s2保存最小值,s1保存原来的值
void Push(const T&x)
{
s1.push(x);
if (s2.empty() || x < s2.top())
{
s2.push(x);
}
else
{
s2.push(s2.top());
}
}
void Pop()
{
s1.pop();
s2.pop();
}
T GetMin()
{
if (!s2.empty())
{
return s2.top();
}
}
网友评论