实现一个栈Stack,Push、Pop、Min(返回最小值的操作)的时间复杂度为O(1)
来源:互联网 发布:linux 新建文件 编辑:程序博客网 时间:2024/05/29 13:53
【思路】
可以用两个栈来实现,s1为存储栈,s2为辅助栈。
入栈时,往s1里入栈,然后若s2为空,则s2也入栈,若s2不为空,则将s1里的栈顶与入栈的数字比较,若栈顶小,则s2不入栈,否则,s2,入栈。
出栈时,s1栈顶和s2栈顶比较,若相等,则s1和s2都出栈,否则,只是s1出栈。
【代码如下】
template <class T>class Stack{public:void Push(T data){_s1.push(data);if (!_s2.empty()){if (_s1.top() < _s2.top()){_s2.push(data);}}else_s2.push(data);}void Pop(){if (_s1.empty()){return;}if (!_s2.empty() && (_s1.top() == _s2.top())){_s2.pop();}_s1.pop();}T Min(){if (!_s2.empty()){return _s2.top();}}private:stack<T> _s1;stack<T> _s2;};结果:
阅读全文
0 0
- 实现一个栈Stack,要求实现Push、Pop、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,Push、Pop、Min(返回最小值的操作)的时间复杂度为O(1)
- 【栈队列】实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 栈--实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、 Min(返回最小值的操作)的时间复杂度为O(1)
- 模拟实现一个Stack 要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈,要求Push/Pop/Min(返回最小值)的时间复杂度为O(1)
- 面试题(实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1))
- 【数据结构】实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- ~实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)~
- bootstrap分页
- JAVA笔记一:FUNDAMENTAL
- 汇编与C/C++的故事
- AndroidManifest.xml警告 Should explicitly set android:allowBackup to true or false Android
- 【步兵 lua】可配置化状态机,死磕行为树
- 实现一个栈Stack,Push、Pop、Min(返回最小值的操作)的时间复杂度为O(1)
- 排序算法汇总
- python学习笔记(二)列表(List)操作方法详解
- 构造函数和析构函数
- 虚拟机的基本操作
- 线段树参考资料
- 如何定义一个只能在栈上(对上)建立对象的类
- Java 并发 CountLatchDown
- 如果你不断地去连服务器某个端口