用兩個堆疊來實作一個佇列,完成佇列的 Push 和 Pop 操作, 佇列中的元素為 int 型別,
思路
佇列是先進先出的,而堆疊是后進先出的,如何用兩個堆疊來實作佇列的效果呢?
我們假設只用 stack1 來存放元素,這樣的話,直接 stack1.pop 是行不通的,每次要彈出元素時,將 stack1 的元素全部彈出,依次存放到 stack2 中,這樣原本在 stack1 最底下的元素,就來到了 stack2 的頂部,使用 stack2.pop 就可以得到我們想要的結果,
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
if(stack1.empty() & stack2.empty()) {
throw new RuntimeException("Queue is empty");
}
if(stack2.empty()) {
while(!stack1.empty()) {
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}
小結
熟悉堆疊后進先出的特點,說不定在有些題目會派上大用場,用一種資料結構模擬另一種資料結構,要結合其特性去思考,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/46381.html
標籤:其他
上一篇:Android Activity 啟動程序詳解(上)
下一篇:二分查找及其變種演算法
