劍指offer(五)之 用兩個棧實現佇列
阿新 • • 發佈:2018-12-22
題目描述
用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。
思路
個人的笨方法根大神的比還是差很多。。。
大神的方法:stack1用於push ,stack2 用於pop。分析pop的話,當stack2空了,那麼要把stack1的資料搬過去。stack1的棧底,就會處於stack2的棧頂。(優先輸出); 當stack2不為空,那麼把stack2的棧定彈出即可。
可以說非常的巧妙了,佩服!
程式碼
連結:https://www.nowcoder.com/questionTerminal/54275ddae22f475981afa2244dd448c6 來源:牛客網 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(); } }