用2個棧實現佇列

kinoyoungk發表於2020-12-22

題目

牛客網題目地址

程式碼

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 (stack2.isEmpty()){
        while(!stack1.isEmpty()){
            stack2.push(stack1.peek());
            stack1.pop();
        }
    }
        int ret = stack2.peek();
        stack2.pop();
        return ret;
    }
}

思路

2個棧實現一個佇列,由於佇列是先進先出,棧是先進後出的。
1.push方法入棧就是直接將資料push進stack1。
2.pop方法就要分情況,如果stack2為空,就把stack1的元素全都push進stack2,然後peek棧頂元素。如果stack2不為空,就直接peek棧頂元素就可以。

總結

題目比較簡單,就是把棧1的元素輸入到棧2,就變成正向排序了。

相關文章