题目21 包含Min函数的栈
/////////////////////////////////////////////////////////////////////////////////////
// 3. 题目21 包含Min函数的栈
- template <typename TYPE>
- class CMinInStack
- {
- public:
- void Push(const TYPE& value);
- const TYPE Pop();
- const TYPE& GetMinValue() const;
- private:
- stack<TYPE> m_stDataStack;
- stack<TYPE> m_stMinStack;
- };
- template <typename TYPE>
- const TYPE& CMinInStack<TYPE>::GetMinValue() const
- {
- assert(!m_stDataStack.empty() && !m_stMinStack.empty());
- return m_stMinStack.top();
- }
- template <typename TYPE>
- const TYPE CMinInStack<TYPE>::Pop()
- {
- assert(!m_stDataStack.empty() && !m_stMinStack.empty());
- TYPE value = m_stDataStack.top();
- m_stDataStack.pop();
- m_stMinStack.pop();
- return value;
- }
- template <typename TYPE>
- void CMinInStack<TYPE>::Push(const TYPE& value)
- {
- // 1.向栈中添加元素
- m_stDataStack.push(value);
- // 2.往辅助栈中添加最小元素
- if (m_stMinStack.empty() || value < m_stMinStack.top())
- {
- m_stMinStack.push(value);
- }
- else
- {
- m_stMinStack.push(m_stMinStack.top());
- }
- }
- void MinInStackTestFunc()
- {
- cout << "\n\n --------------- MinInStackTestFunc Start -------------->" << endl;
- int aiArray[] = {3, 4, 5, 8, 9, 1, 4, 45, 89};
- int iLen = sizeof(aiArray) / sizeof(int);
- TRAVERSAL_ARRAY(aiArray, iLen);
- CMinInStack<int> stMinStack;
- for (int i = 0; i < iLen; i++)
- {
- stMinStack.Push(aiArray[i]);
- }
- printf("最小栈 最小元素: %d\n", stMinStack.GetMinValue());
- printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
- printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
- printf("最小栈 最小元素: %d\n", stMinStack.GetMinValue());
- printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
- printf("最小栈 最小元素: %d\n", stMinStack.GetMinValue());
- printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
- printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
- printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
- printf("最小栈 最小元素: %d\n", stMinStack.GetMinValue());
- cout << "\n\n --------------- MinInStackTestFunc End -------------->" << endl;
- }
题目21 包含Min函数的栈的更多相关文章
- 【算法题目】包含min函数的栈
题目来源:<剑指offer>面试题21 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min,push以及pop的时间复杂度都是O(1). 分 ...
- 剑指Offer:面试题21——包含min函数的栈(java实现)
问题描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min,push及pop的时间复杂度都是O(1). 思路:加入一个辅助栈用来存储最小值集合 (这里要注 ...
- 剑指offer-面试题21.包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数. 在该栈中,调用min,push及pop的时间复杂度都是O(1). 这一题实际上需要一个辅助栈存储最小值: 1.在模板类定 ...
- 《剑指offer》面试题21—包含min函数的栈
题目:定义栈数据结构,并在该数据结构中实现一个能获得栈最小元素的函数min.要求push,min,pop时间都是O(1). 思路:要用一个辅助栈,每次有新元素压栈时辅助栈压入当前最小元素:min函数直 ...
- 《剑指offer》面试题21 包含min函数的栈 Java版
(min函数的作用是返回栈内最小值) 首先这个栈要具有普通栈所具有的push()和pop()方法,那么内部一定包含一个Stack.至于还要能实现min函数,而且还是在O(1)时间复杂度内,我们不得不考 ...
- 21 包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. C++: class Solution { private: stack<int> dataStack ; stac ...
- 剑指Offer面试题:19.包含Min函数的栈
一.题目:包含Min函数的栈 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是O(1). 这里我们要实现的就是min ...
- 栈二:包含min函数的栈
/** * 题目:包含min函数的栈 * 描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. * 注:用data来保存数据,用另一个栈min保存依次入栈最小的数 * ...
- 【编程题目】设计包含 min 函数的栈
2.设计包含 min 函数的栈(栈)定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素.要求函数 min.push 以及 pop 的时间复杂度都是 O(1). 我的思路: 用一个额外的 ...
随机推荐
- P1966 火柴排队——逆序对(归并,树状数组)
P1966 火柴排队 很好的逆序对板子题: 求的是(x1-x2)*(x1-x2)的最小值: x1*x1+x2*x2-2*x1*x2 让x1*x2最大即可: 可以证明将b,c数组排序后,一一对应的状态是 ...
- AWS API Gateway Swagger定义
导出Swagger接口定义文件 在AWS API Gateway界面上,可以导出swagger接口定义文件. 而后利用Node js swagger-ui 依赖,生成swagger接口地址 Cloud ...
- FOI冬令营 Day4
目录 T1.循环流(flow) 传送门 Code T2.整除分块(mex) 传送门 Code T3.森林(forest) 传送门 Code 咕咕咕 T1.循环流(flow) 传送门 Code /* 特 ...
- Tkinter 之Scale滑块标签
一.参数说明 语法 作用 Scale(window, label="滑块") 滑块标题 Scale(window, label="滑块", from_=0) 滑 ...
- 2019-06-03 校内python模拟题解(所有非原题)
一起来女装吧 本题改编自USACO(USA Computing Olympiad) 1.1节的第一题 (感谢lsy同学对本题题面的贡献) 直接计算就好了 chr:将ASCII码转成字符 ord:字符对 ...
- MovingWallVelocity边界条件【翻译】
翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/59646-movingwallvelocity-bound ...
- 用win-acme给windows服务器添加SSL(Let's Encrypt)证书
本文是我今天用win-acme给windows服务器添加SSL(Let's Encrypt)证书的一个过程,主要是给我自己备忘的. 1.首先先在github上下载最新版的win-acme. 下载地址: ...
- Comet OJ - Contest #6 B.双倍快乐(二维最大上升子序列和)
双倍快乐 题目描述 Illyasviel:"你想要最长不下降子序列吗?" star-dust:"好啊!" Illyasviel:"老板,给我整两个最长 ...
- 2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础
实验内容 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS,CSRF).Webgoat实践下相关实验. 实验过程 WebGoat: Webgoat是OWA ...
- TynSerial基本数据类型序列(还原)
TynSerial基本数据类型序列(还原) procedure TForm1.ToolButton17Click(Sender: TObject); var serial: TynSerial; be ...