剑指Offer之面试题21:包含min函数的栈
来源:互联网 发布:上海国金网络朱文君 编辑:程序博客网 时间:2024/05/01 16:22
所有代码均通过G++编译器测试,仅为练手纪录。
//面试题21:包含min函数的栈
//题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。
// 在该栈中,调用min/push/pop的时间复杂度都是O(1)。
//面试题21:包含min函数的栈//题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。// 在该栈中,调用min/push/pop的时间复杂度都是O(1)。template<typename T>class CStackMin{public: CStackMin(){} ~CStackMin() { Clear(); } public: void Push(const T& item) { m_stackValue.push(item); if (m_stackMin.empty()) { m_stackMin.push(item); } else { if(item <= m_stackMin.top()) { m_stackMin.push(item); } } } void Pop() { if(m_stackMin.empty()) { return; } if(m_stackValue.top() == m_stackMin.top()) { m_stackMin.pop(); } m_stackValue.pop(); } T Min() const { if(m_stackMin.empty()) { return T(); } return m_stackMin.top(); } private: void Clear() { while (!m_stackValue.empty()) { m_stackValue.pop(); } while (!m_stackMin.empty()) { m_stackMin.pop(); } } private: stack<T> m_stackValue; stack<T> m_stackMin;};void TestStackMin(){ CStackMin<int> stack; stack.Push(3); LogInfo("Min:%d",stack.Min()); stack.Push(7); LogInfo("Min:%d",stack.Min()); stack.Push(2); LogInfo("Min:%d",stack.Min()); stack.Push(4); LogInfo("Min:%d",stack.Min()); stack.Push(9); LogInfo("Min:%d",stack.Min()); stack.Push(1); LogInfo("Min:%d",stack.Min()); stack.Push(4); LogInfo("Min:%d",stack.Min()); stack.Pop(); LogInfo("Min:%d",stack.Min()); stack.Pop(); LogInfo("Min:%d",stack.Min()); stack.Pop(); LogInfo("Min:%d",stack.Min()); stack.Pop(); LogInfo("Min:%d",stack.Min()); stack.Pop(); LogInfo("Min:%d",stack.Min()); stack.Pop(); LogInfo("Min:%d",stack.Min()); stack.Pop(); LogInfo("Min:%d",stack.Min()); stack.Pop(); LogInfo("Min:%d",stack.Min());}
ZhaiPillary
2016-12-25
0 0
- [剑指offer][面试题21]包含min函数的栈
- 剑指offer 面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 剑指Offer:面试题21 包含min函数的栈
- 剑指offer 面试题21 包含min函数的栈
- 《剑指Offer》面试题21:包含min函数的栈
- 剑指offer面试题21-包含min函数的栈
- 剑指offer-面试题21:包含min函数的栈
- 剑指Offer----面试题21:包含min函数的栈
- 剑指offer-面试题21:包含min函数的栈
- 剑指offer面试题21:包含min函数的栈
- 剑指Offer面试题21:包含min函数的栈
- 剑指offer--面试题21:包含min函数的栈
- 剑指Offer---面试题21:包含min函数的栈
- 剑指offer-面试题21-包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 【面试题】剑指Offer-21-包含Min函数的栈
- SM-AJAX的servlet回传json时乱码问题的解决
- node.js回调函数
- POJ 3134 Power Calculus 笔记
- SM-js判断input-text输入值并进行反馈
- 可迭代对象和迭代器
- 剑指Offer之面试题21:包含min函数的栈
- SM-添加账单(默认列出某供应商全部商品)-通过checkbox多选框和ajax实现账单添加时不定量商品项的servlet传值
- mac 安装Sublime Text(绿色版)
- JAVA web项目报错no sigar-x86-winnt.dll in java.library.path
- shell脚本设计之文件查找
- 组合模式实例
- 剑指Offer之面试题22:栈的压入、弹出序列
- 指定系统中默认的awk
- 欢迎使用CSDN-markdown编辑器