#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 函数的栈 【栈】
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
一场关于栈的面试----最小栈的实现
一场关于栈的面试----最小栈的实现
最小值 出栈 入栈 -
面试题30:包含min函数的栈
题目
System Stack 出栈 -
剑指offer | 面试题30:包含min函数的栈
转载本文章请标明作者和出处本文出自《Darwin的程序空间
数据结构 算法 最小值 值栈 时间复杂度 -
剑指offer | 面试题23:包含min函数的栈
面试题23:包含min函数的栈
剑指offer 最小值 spring -
【数据结构与算法面试题】包含min函数的栈
题目来源“数据结构与算法面试题
数据结构 最小值 问题分析 -
19、包含Min函数的栈
题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的
剑指offer 最小值 时间复杂度 数据结构