面试题12 - 包含 min 函数的栈 【栈】
2013-01-29 13:37
435 查看
#include <iostream> #include <cstdio> #include <stack> #include <queue> #include <deque> // 支持下标访问 #include <algorithm> using namespace std; template<typename T> class StackWithMin { public : StackWithMin() {} virtual ~StackWithMin() {} const size_t size() const; void pop(); void push(const T& value); T top() const; T min(); private : deque<T> m_data; deque<T> m_min; }; template<typename T> const size_t StackWithMin<T>::size() const { return m_data.size(); } template<typename T> void StackWithMin<T>::pop() { assert(!m_data.empty() && !m_min.empty()); m_data.pop_front(); m_min.pop_front(); } template<typename T> void StackWithMin<T>::push(const T& value) { m_data.push_front(value); if(m_min.empty() || value < m_min[0]) { m_min.push_front(value); } else { m_min.push_front(m_min[0]); } } template<typename T> T StackWithMin<T>::top() const { assert(!m_data.empty() && !m_min.empty()); return m_data[0]; } template<typename T> T StackWithMin<T>::min() { assert(!m_data.empty() && !m_min.empty()); return m_min[0]; } int main() { return 0; }
相关文章推荐
- 面试题12 - 包含 min 函数的栈 【栈】
- 微软面试题系列(二):设计包含 min 函数的栈
- 【剑指offer】面试题 30:包含 min 函数的栈
- 剑指offer 面试题21 包含 min 函数的栈
- 算法与数据结构面试题(2)-设计包含min 函数的栈
- 面试题系列-----数据结构(设计包含 min 函数的栈(栈))
- 面试题三:设计包含 min 函数的栈。
- 剑指offer——面试题21:包含 min 函数的栈
- 【剑指Offer学习】【面试题21:包含min 函数的钱】
- 微软面试题解题笔记——包含min 函数的栈
- 包含 min 函数的栈
- 【练习】设计包含min 函数的栈
- 设计包含min函数的栈,要求函数min、push以及pop的时间复杂度都是O(1)
- 【剑指Offer学习】【面试题21:包括min 函数的栈】
- 2.设计包含min 函数的栈
- 【剑指offer】第三十题(包含 min 函数的栈) 和 第三十一题(栈的压入、弹出序列)
- 包含min,push,pop函数的栈,时间为O(1)
- 【从零单排之微软面试100题系列】02之包含 min 函数的栈
- MS - 2 - 设计包含 min 函数的栈
- 【深信服面试题】编写函数:1-1000之中包含2的个数,比如22算两个。