题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
主要思想:使用一个辅助栈来保存最小值的轨迹。
class Solution {
public:
stack<int> m_data;
stack<int> m_minvalue;//辅助栈,保存最小元素
void push(int value) {
if(m_minvalue.empty() || value< m_minvalue.top())
m_minvalue.push(value);
else
m_minvalue.push( m_minvalue.top());
m_data.push(value);
}
void pop() {
if(!m_data.empty())
{
m_data.pop();
m_minvalue.pop();
}
}
int top() {
if(m_data.size() != 0)
return m_data.top();
else
return NULL;
}
int min() {
if(m_data.size() != 0)
return m_minvalue.top();
else
return NULL;
}
};