带最小值操作的栈
来源:互联网 发布:网狐荣耀棋牌源码 编辑:程序博客网 时间:2024/05/27 09:44
问题描述:
实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
如果堆栈中没有数字则不能进行min方法的调用。
思路方法:
1、定义一个栈这里我们称为最小栈,原来的栈我们称为数据栈。
2、最小栈和数据栈元素个数一定相同。最小栈的栈顶元素为数据栈的所有元素的最小值。
3、数据栈入栈一个元素A,最小栈需要拿这个元素与最小栈栈顶元素B比较,如果A小于B,则最小栈入栈A。否则最小栈入栈B。
4、当数据栈出栈一个元素时,最小栈也同时出栈一个元素。
5、对于站内没有元素的话,则需要抛出异常。
代码如下:
class MinStack {public: stack<int> s_num; stack<int> s_min; MinStack() { // do initialization if necessary } void push(int number) { // write your code here s_num.push(number); if(s_min.empty()){ s_min.push(number); } else{ int min = s_min.top(); if(min<number){ s_min.push(min); } else{ s_min.push(number); } } } int pop() { // write your code here if(s_num.empty()){ throw "stack is empty"; } else{ int res = s_num.top(); s_num.pop(); s_min.pop(); return res; } } int min() { // write your code here if(s_min.empty()){ throw "stack is empty"; } else{ int res = s_min.top(); return res; } }};
阅读全文
0 0
- 带最小值操作的栈
- 带最小值操作的栈
- 带最小值操作的栈
- 带最小值操作的栈
- 带最小值操作的栈
- 带最小值操作的栈
- 带最小值操作的栈
- LintCode 带最小值操作的栈
- lintcode-带最小值操作的栈-12
- 题目:带最小值操作的栈
- LintCode:带最小值操作的栈
- lintcode,带最小值操作的栈
- lintcode,带最小值操作的栈
- LintCode 12 带最小值操作的栈
- 实现带最小值操作的栈
- lintcode -- 带最小值操作的栈
- [LintCode]12.带最小值操作的栈
- LintCode-----12.带最小值操作的栈
- SQL 语句递归查询 With AS 查找所有子节点
- Java中LinkedList集合
- OSG矩阵运算
- linkedmap原理及应用
- TCP/IP聊天室
- 带最小值操作的栈
- 欢迎使用CSDN-markdown编辑器
- C#之字符匹配输出
- BST
- 抖动函数封装
- 【leetcode】第6题 ZigZag Conversion 题目+解析+代码
- nyoj123 士兵杀敌四
- notePad++ 配置好后报错:java.lang.UnsupportedClassVersionError: Test (Unsupported major.minor version 51.0)
- RAC日常监控