用兩個(gè)棧實(shí)現(xiàn)隊(duì)列
解題思路
in 棧用來處理入棧(push)操作,out 棧用來處理出棧(pop)操作。一個(gè)元素進(jìn)入 in 棧之后,出棧的順序被反轉(zhuǎn)。當(dāng)元素要出棧時(shí),需要先進(jìn)入 out 棧,此時(shí)元素出棧順序再一次被反轉(zhuǎn),因此出棧順序就和最開始入棧順序是相同的,此時(shí)先進(jìn)入的元素先退出,這就是隊(duì)列的順序。
Stack<Integer> in = new Stack<Integer>();
Stack<Integer> out = new Stack<Integer>();
public void push(int node) {
in.push(node);
}
public int pop() {
if (out.isEmpty()) {
while (!in.isEmpty()) {
out.push(in.pop());
}
}
return out.pop();
}