问题描述
题目描述中有说不存在空栈的pop和peek,所以无需判断这个
解析
重点在于思路,代码白给。
要用栈实现队列,肯定是两个栈才可以。一个做入队操作,一个做出队操作。
首先入队简单,往栈里加就完事了。
出队复杂,要从出栈的栈里取,而且当出栈的栈是空的时候,要把入队的栈的元素放到出队的栈中。
代码
class MyQueue {Stack<Integer> stackIn;Stack<Integer> stackOut;public MyQueue() {stackIn = new Stack<>();stackOut = new Stack<>();}public void push(int x) {stackIn.push(x);}public int pop() {isDumpStackIn();return stackOut.pop();}public int peek() {isDumpStackIn();return stackOut.peek();}public boolean empty() {return stackIn.isEmpty() && stackOut.isEmpty();}public void isDumpStackIn(){if(!stackOut.isEmpty()){return ;}while(!stackIn.isEmpty()){stackOut.push(stackIn.pop());}}
}/*** Your MyQueue object will be instantiated and called as such:* MyQueue obj = new MyQueue();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.peek();* boolean param_4 = obj.empty();*/