1、题目
Leetcode 225. Implement Stack using Queues
2、思路
始终保证队列a为空,新元素x添加到空队列a中,x就始终在a的队头。
再将另外一个队列b中的数据依次加入到a中,a队列里的元素就保持着先进后出的性质。
3、Java 代码
class MyStack {
private Queue<Integer> a;//输入队列
private Queue<Integer> b;//输出队列
public MyStack() {
a = new LinkedList<>();
b = new LinkedList<>();
}
public void push(int x) {
a.offer(x);
// 将b队列中元素全部转给a队列
while(!b.isEmpty())
a.offer(b.poll());
// 交换a和b,使得a队列没有在push()的时候始终为空队列
Queue temp = a;
a = b;
b = temp;
}
public int pop() {
return b.poll();
}
public int top() {
return b.peek();
}
public boolean empty() {
return b.isEmpty();
}
}
参考文章:
https://leetcode.cn/problems/implement-stack-using-queues/comments/
网友评论