leetCode232 用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)
使用两个栈来完成,一个用作输出,一个用作输入。
删除或获取开头元素时,输出栈为空则将输入栈的数据依次弹出并压入输出栈。
class MyQueue {
// 创建两个栈,一个用作输出一个输入
Deque<Integer> inStack = new LinkedList<Integer>();
Deque<Integer> outStack = new LinkedList<Integer>();
public MyQueue() {
}
//插入队列的放到输入栈
public void push(int x) {
inStack.push(x);
}
public int pop() {
if(outStack.isEmpty()) {
inorout();
}
return outStack.pop();
}
public int peek() {
if(outStack.isEmpty()) {
inorout();
}
return outStack.peek();
}
public boolean empty() {
return inStack.isEmpty() && outStack.isEmpty();
}
//将输入栈中元素全部弹出到输出栈
private void inorout() {
while(!inStack.isEmpty()) {
outStack.push(inStack.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();
*/