剑指offer--包含min函数的栈
来源:互联网 发布:中信国安历史交易数据 编辑:程序博客网 时间:2024/05/18 07:32
面试题21:包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1).
思路:每次把最小的值都保存在辅助栈里。
//包含min函数的栈template <typename Type>class StackWithMin{public: void pop(); void push(const Type& data); const Type& min()const;private: stack<Type> m_dataStack;//存放数据的栈 stack<Type> m_minStack;//存放最小值的栈};template <typename Type>void StackWithMin<Type>::pop(){ assert(m_dataStack.size()>0 && m_minStack.size()>0); m_minStack.pop(); m_dataStack.pop();}template <typename Type>void StackWithMin<Type>::push(const Type& data){ m_dataStack.push(data); if(m_minStack.size()==0 || m_minStack.top()>data) m_minStack.push(data); else m_minStack.push(m_minStack.top());}template <typename Type>const Type& StackWithMin<Type>::min()const{ assert(m_dataStack.size()>0 && m_minStack.size()>0); return m_minStack.top();}int main(){ StackWithMin<int> st; st.push(4); st.push(3); st.push(2); st.push(1); int min = st.min(); cout<<"StackMin:"<<min<<endl;//1 st.pop(); min = st.min(); cout<<"StackMin:"<<min<<endl;//2 st.push(0); min = st.min(); cout<<"StackMin:"<<min<<endl;//0}
阅读全文
0 0
- 【剑指offer】包含min函数的栈
- 剑指offer--包含min函数的栈
- 剑指Offer-->包含min函数的栈
- 《剑指offer》包含min函数的栈
- 剑指offer - 包含min函数的栈
- 剑指offer-包含min函数的栈
- 剑指offer:包含min函数的栈
- 包含min函数的栈|剑指offer
- 剑指offer-包含min函数的栈
- 剑指offer 包含min函数的栈
- 剑指offer:包含min函数的栈
- 剑指offer 包含min函数的栈
- [剑指offer]包含min函数的栈
- 《剑指offer》-包含min函数的栈
- 剑指offer----包含min函数的栈
- 【剑指offer】包含min函数的栈
- 剑指offer|包含min函数的栈
- 《剑指offer》包含min函数的栈
- 开始,没有标题
- 我的第一个java程序:HelloWord
- Centos7安装LAMP环境(apache + mysql + php)
- 深入理解ThreadLocal
- next() 与 nextLine()的区别
- 剑指offer--包含min函数的栈
- Ubuntu 16.04下安装ssh远程无法连接的解决方法
- 文章标题
- 欢迎使用CSDN-markdown编辑器
- php和JavaScript实现八大排序算法
- PAT --- 1010. 一元多项式求导 (25)
- Java测试框架Mockito源码分析
- C#泛型约束与调用
- leetcode之二叉树类之二叉树中序遍历运用-----OJ173/230/98/99/285 二叉树迭代器/BST第K小元素/判断BST是否合法/恢复BST/二叉树下个节点