设计一个有getMin(),push(),pop().功能的栈
2016-11-14 15:44
295 查看
要求:pop push getMin的时间复杂度O(1).
package chapter01_stack_and_queue; import java.util.Stack; public class _01_GetMinStack { public static class MyStack { Stack<Integer> stackData = new Stack<Integer>(); Stack<Integer> stackMin = new Stack<Integer>(); /** * 申请另外一个栈一直存储最小值。与数据栈同步增长push * @param newNum */ public void push(int newNum) { if (this.stackMin.isEmpty()) { this.stackMin.push(newNum); } else if (newNum < this.getMin()) { this.stackMin.push(newNum); } else { int newMin = this.stackMin.peek(); this.stackMin.push(newMin); } this.stackData.push(newNum); } public int pop() { this.stackMin.pop(); return this.stackData.pop(); } private int getMin() { return this.stackMin.peek(); } } public static void main(String[] args) { MyStack stack = new MyStack(); stack.push(3); stack.push(4); stack.push(1); System.out.println(stack.getMin()); stack.pop(); System.out.println(stack.getMin()); } }
相关文章推荐
- 设计一个有getMin功能的栈
- 设计一个带有push,pop和max的栈
- 设计一个有getMin功能的栈
- 程序员面试指南之设计一个有GetMin功能的栈
- 设计一个堆栈,函数min、push 以及pop 的时间复杂度都是O(1)
- [算法最优]设计一个有getMin功能的栈
- 微软100题40题-设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)。
- 设计一个有getMin功能的栈(C++版)
- 设计一个getMin功能的栈,如果面试官让你写一个数组类,一定不要用指针去管理new出来原生的数组,那就是在给自己挖坑
- 设计一个有getMin功能的栈
- 算法--设计一个有getMin功能的栈
- 设计一个包含pop,push,min在内的栈,并且各个函数的时间复杂度均为o(1)
- 栈和队列---设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个栈,除了pop push 还支持Min,时间复杂度都为o(1);
- 程序员代码面试指南--设计一个具有getMin功能的栈
- 栈和队列 设计一个有getMin()功能的栈
- 栈和队列——设计一个有getMin功能的栈(二)