Leetcode 分類刷題 —— 隊(duì)列(Queue)
1、題目
Leetcode 225. Implement Stack using Queues

2、思路
始終保證隊(duì)列a為空,新元素x添加到空隊(duì)列a中,x就始終在a的隊(duì)頭。
再將另外一個(gè)隊(duì)列b中的數(shù)據(jù)依次加入到a中,a隊(duì)列里的元素就保持著先進(jìn)后出的性質(zhì)。
3、Java 代碼
class MyStack {
private Queue<Integer> a;//輸入隊(duì)列
private Queue<Integer> b;//輸出隊(duì)列
public MyStack() {
a = new LinkedList<>();
b = new LinkedList<>();
}
public void push(int x) {
a.offer(x);
// 將b隊(duì)列中元素全部轉(zhuǎn)給a隊(duì)列
while(!b.isEmpty())
a.offer(b.poll());
// 交換a和b,使得a隊(duì)列沒(méi)有在push()的時(shí)候始終為空隊(duì)列
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/