重造轮子-最小栈
来源:互联网 发布:证大财富淘宝贷款骗局 编辑:程序博客网 时间:2024/05/18 05:28
目标:构建一个栈,以O(1)的时间复杂度返回栈内数据的最小值。
方法:用两个栈实现,一个存放原数据,一个存放最小值。对于原数据栈按普通的栈规则进行出栈入栈,对于最小值栈则按照
入栈规则
1、如果栈为空直接将当前的输入数入栈;
2、如果输入数小于等于最小值栈栈顶元素的值,那么将该输入数入栈;
出栈规则
1、如果原数据栈弹出的元素等于最小值栈顶的元素,那么最小值栈顶的元素也弹出;
2、如果不等,则不处理最小栈
(理由是最小栈中栈顶元素的意义是原数据栈当前的最小,因此原数据栈栈顶的元素值只可能小于等于最小栈栈顶元素值)
代码:
class Solution{public:void push(int num){source.push(num);if(minvalue.empty())minvalue.push(num);else if(num <= minvalue.top())minvalue.push(num);}void pop(){if(source.empty()){cout<<"Your stack is empty !!"<<endl;return;}if(source.top() == minvalue.top())minvalue.pop();source.pop();}int top(){if(source.empty()){cout<<"your stack is empty !!"<<endl;return -1;}return source.top();}int getMin(){if(minvalue.empty()){cout<<"You stack is empty !!"<<endl;return -1;}return minvalue.top();}private:stack<int> source;//原数据栈stack<int> minvalue;//最小值栈};
0 0
- 重造轮子-最小栈
- 重造轮子-栈实现队列
- 重造轮子-sqrt
- 重视积累,不再重造轮子
- 重造轮子:学写函数配接器
- 重造轮子-random5到random7
- c# List筛选~ 重造轮子
- 重造轮子 用递归函数和栈操作逆序一个栈
- 服务化框架设计实现(重造轮子,借事修人)
- 关于轮子跟造轮子。
- 72. 经常重新造轮子
- Python 造轮子/现有轮子 相关资料
- 重新造轮子,编写自己的RecordSet
- 开始造轮子
- 不要重复造轮子
- 谈谈自己造轮子
- 不要重复造轮子
- 不再重复造轮子
- 从其它机器把collections拷到本机
- Netbeans 计算器设计
- 数组名和指针的区别
- CRecordsetBindObject优化
- 优先队列(利用二叉堆实现)
- 重造轮子-最小栈
- PopupWindow的特殊情况
- PHP防止SQL注入自带函数分析
- ListView和EditText发布帖子隐藏软键盘
- NYOJ 949 哈利波特
- STM32 USART 输入输出C库函数重定向理解
- emacs常见变量和函数【转载】
- IL思路及遇到的问题、解决方法
- HDU 5458 Stability【树链剖分】