Leetcode225. 用队列实现栈
题目:
使用队列实现栈的下列操作:
push(x) – 元素 x 入栈
pop() – 移除栈顶元素
top() – 获取栈顶元素
empty() – 返回栈是否为空
题解:
双队列方式实现
java代码如下:
public class MyStack {
private Queue<Integer> inQueue;
private Queue<Integer> outQueue;
/**
* Initialize your data structure here.
*/
public MyStack() {
inQueue = new LinkedBlockingQueue<>();
outQueue = new LinkedBlockingQueue<>();
}
/**
* Push element x onto stack.
*/
public void push(int x) {
inQueue.add(x);
while (!outQueue.isEmpty()) {
inQueue.add(outQueue.poll());
}
while (!inQueue.isEmpty()) {
outQueue.add(inQueue.poll());
}
}
/**
* Removes the element on top of the stack and returns that element.
*/
public int pop() {
return outQueue.poll();
}
/**
* Get the top element.
*/
public int top() {
return outQueue.peek();
}
/**
* Returns whether the stack is empty.
*/
public boolean empty() {
return outQueue.isEmpty();
}
}