包含min函数的栈
2015-09-28 11:32
267 查看
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的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(); }
测试用例:
新压入栈的数字比之前的最小值大
新压入栈的数字比之前的最小值小
弹出栈的数字不是最小的元素
弹出栈的数字是最小的元素
相关文章推荐
- C++基于栈实现铁轨问题
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- Array栈方法和队列方法的特点说明
- java数据结构之java实现栈
- 浅析栈区和堆区内存分配的区别
- 用Java代码实现栈数据结构的基本方法归纳
- 用PHP解决的一个栈的面试题
- 浅谈C#中堆和栈的区别(附上图解)
- JavaScript数据结构与算法之栈详解
- C语言之栈和堆(Stack && Heap)的优缺点及其使用区别
- Python实现栈的方法
- Java中堆和栈的区别详解
- java中堆和栈的区别分析
- C/C++函数调用栈的实现方法
- C++中静态存储区与栈以及堆的区别详解
- C++中用栈来判断括号字符串匹配问题的实现方法
- C++中栈结构建立与操作详细解析