包含min函数的栈

来源:互联网 发布:解剖学软件哪个好 编辑:程序博客网 时间:2024/06/05 23:59

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。

template <typename T> void StackWithMin<T>::push(const T& value){    m_data.push(value);    if (m_min.size() == 0 || value < m_min.top()){        m_min.push(value);    }    else {        m_min.push(m_min.top());    }}template <typename T> void StackWithMin<T>::pop(){    assert(m_data.size() > 0 && m_min.size() > 0);    m_data.pop();    m_min.pop();}template <typename T> const T& StackWithMin<T>::min() const{    assert(m_data.size() > 0 && m_min.size() > 0);    return m_min.top();}

测试用例

  • 新压入栈的数字比之前的最小值大
  • 新压入栈的数字比之前的最小值小
  • 弹出栈的数字不是最小的元素
  • 弹出栈的数字是最小的元素
0 0
原创粉丝点击