劍指Offer – 用兩個棧實現隊列

題目描述

用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。

解題思路

  1. 既然是實現隊列,那麼就要保證先進去的元素先出來。
  2. 可以先講元素都放入一個棧中,這樣所有的元素都是倒序。
  3. 將棧中元素都出棧,存入另外一個棧中,這樣所有的元素順序都變成正序了。不過要判斷以下另一個棧是否爲空,不爲空的話,就不用放進去。

代碼

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 (stack2.empty() && stack1.empty())
            throw new RuntimeException();
        if (stack2.empty()) {
            while (!stack1.empty()) {
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }
}

文章彙總見這裏 >>劍指Offer彙總<<

更多精彩文章見這裏 >>我的學習小站<< & 更多好玩見這裏 >>技術雜談<<

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章