算法与数据机构学习_第一章.栈和队列_1.设计一个有返回栈中最小元素功能的栈
来源:互联网 发布:access数据库好用吗 编辑:程序博客网 时间:2024/05/29 15:10
设计一个有getMin功能的栈(返回栈中的最小元素)
算法要求:实现一个特殊的栈,在实现栈的基本功能的基础上,添加能够实现返回栈中最小元素的栈,要求算法的时间复杂读为O(1),即在常数时间内实现。
思路:在一个栈中在时间复杂读度为O(1)返回栈中最小元素是不可能实现的额,因此借助另一个栈,即用2个栈实现,一个栈和普通的栈一样,存放元素,另一个专门用来存放栈中最小元素。
算法过程:定义2个普通的Stack栈,一个用于普通操作栈,一个用来存放栈中的最小元素,即为stackMin,这个最小元素默认是栈中第一个元素,当新添加进来的元素小于于stackMin栈中的元素时,将这个元素添加进来,到最后stackMin栈中存放的就是栈中最小元素。
算法的java代码实现如下:
public class Stack_GetMin { public static void main(String[] args) { MyStack stackMin = new MyStack(); stackMin.push(5); stackMin.push(3); stackMin.push(-9); stackMin.push(6); stackMin.push(9); stackMin.push(7); int minValue = stackMin.getMinValue(); System.out.println("存放原始数据"+stackMin); System.out.println(minValue); }} class MyStack extends Stack<Integer>{ Stack<Integer> stackMin = new Stack<>(); @Override public Integer push(Integer item) { if (stackMin.empty()) { stackMin.push(item); } else if (item<=stackMin.peek()) { stackMin.push(item); } return super.push(item); } @Override public synchronized Integer pop() { if (lastElement()==stackMin.peek()) { stackMin.pop(); } return super.pop(); } public int getMinValue() { System.out.println("存放最小元素"+stackMin); return stackMin.peek(); }}
0 0
- 算法与数据机构学习_第一章.栈和队列_1.设计一个有返回栈中最小元素功能的栈
- 算法与数据机构学习_第一章.栈和队列_2.实现2个栈组成的队列
- 1_1栈和队列_设计一个有Getmin功能的栈
- 栈和队列 设计一个有getMin()功能的栈
- 栈和队列---设计一个有getMin功能的栈
- 数据结构与算法_两个栈实现一个队列的功能
- 栈和队列之设计一个有getMin(得到最小值)功能的栈
- 1栈和队列--设计一个有getMin功能的栈
- 栈和队列——设计一个有getMin功能的栈(一)
- 栈和队列——设计一个有getMin功能的栈(二)
- (一)栈和队列--设计一个有getMin功能的栈 java实现
- 算法--设计一个有getMin功能的栈
- 9.3栈和队列(三)——设计一个栈,出pop与push方法,还支持 min方法,可返回栈元素中的最小值
- 程序员面试金典: 9.3栈与队列 3.2设计一个栈,除pop与push方法,支持返回栈最小元素min方法,时间复杂度均为O(1)
- 设计一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作
- 《算法》第一章——利用两个栈实现一个队列的push和pop操作
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 大数减法
- 微信移动客户端内部浏览器分享到朋友圈,QQ空间代码
- hdu 5538 House Building(长春现场赛——水题)
- iOS小技巧 - xcode6引入pch文件
- UI控件--RecyclerView(1)
- 算法与数据机构学习_第一章.栈和队列_1.设计一个有返回栈中最小元素功能的栈
- python资料全集
- 反射四步走
- JAVA 反射总结
- requests的介绍和学习
- 电影节(SDUT_2797)
- Clang Address Sanitizer
- SPOJ 7258 SUBLEX 后缀自动机
- 如何更方便快捷的调用restful服务