2020/12/5 棧佇列堆(牛客網)

不願庸碌發表於2020-12-07

用兩個棧實現佇列—牛客網

題目描述
用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。
題解思路
stack1 棧用來處理入棧(push)操作,stack2 棧用來處理出棧(pop)操作。一個元素進入 stack1 棧之後,出棧的順序被反轉。當元素要出棧時,需要先進入 stack2 棧,此時元素出棧順序再一次被反轉,因此出棧順序就和最開始入棧順序是相同的,先進入的元素先退出,這就是佇列的順序。

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.pop());
             }
            return stack2.pop();
        }else{
            return stack2.pop();
        }
    }
}

相關文章