Java实现-队列中取最大值操作
2017-08-20 15:16
447 查看
class MyQueue{ MyStack myStack1=new MyStack(); MyStack myStack2=new MyStack(); public void offer(int value){ myStack1.push(value); } public int poll(){ if(myStack2.isEmpty()){ while(!myStack1.isEmpty()){ myStack2.push(myStack1.pop()); } return myStack2.pop(); }else{ return myStack2.pop(); } } public int getMax(){ return Math.max(myStack1.getMax(), myStack2.getMax()); } } class MyStack { Stack<Integer> stack1=new Stack<Integer> (); Stack<Integer> stack2=new Stack<Integer> (); public boolean isEmpty(){ return stack1.isEmpty(); } public void push(int value){ stack1.push(value); if(stack2.isEmpty()){ stack2.push(value); }else{ stack2.push(Math.max(value, stack2.peek())); } } public int pop(){ stack2.pop(); return stack1.pop(); } public int getMax(){ if(stack2.isEmpty()){ return 0; } return stack2.peek(); } }
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【225-Implement Stack using Queues(用队列实现栈操作)】
- java 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 栈和队列操作:栈实现、队列实现、双栈实现队列、双队列实现栈、栈实现O(n)求当前栈最大值
- 剑指Offer——Java实现栈和队列的互模拟操作
- 编程之美3.7队列中取最大值操作问题Java版
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
- java最小堆实现优先权队列和求最大的n个数问题
- 【数据结构+Java】Java实现简单队列、循环队列操作
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
- Java实现队列操作
- 循环队列基本操作的实现(Java)
- Java Jedis操作Redis示例(一)——pub/sub模式实现消息队列
- 优先队列的基本操作实现与应用(Java实现)
- 《剑指Offer》用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。java
- 队列实现插入,弹出,找到最大值和最小值的操作
- Java Jedis操作Redis示例(二)——list 生产者/消费者模式实现消息队列
- 剑指offer面试题java实现之题7:用两个栈模拟一个队列的入队和出队操作
- 剑指Offer——Java实现栈和队列的互模拟操作
- 优先队列的Java实现(最大二叉堆)