问题:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路:
1、C++之栈简介:
栈是一种先进后出(FILO)的数据结构,在C++的库 <Stack> 中。栈提供了几个常用操作:1)入栈:std::stack::push(); 2)出栈:std::stack::pop();
3)访问栈顶元素:std::stack::top(); 4)栈空判断:std::stack::empty() 5)栈中元素个数:std::stack::size()。
2、定义两个栈对象,一个栈(栈1)负责存储压入的数据,另一个栈(栈2)负责存储最小元素,压入的数据要比上次压入数据小,也即,当压入栈1的数据比当前栈2栈顶元素小,则将此数据压入栈2。
具体实现代码如下:
class Solution {
public:
stack<int> data;
stack<int> minimum;
void push(int value)
{
data.push(value);
if(!minimum.size()||minimum.top()>value)
minimum.push(value);
}
void pop()
{
if(data.top()==minimum.top())
minimum.pop();
data.pop();
}
int top()
{
return data.top();
}
int min()
{
return minimum.top();
}
};