劍指offer(java實現)第5題“用兩個棧實現佇列”-牛客網

zhuminChosen發表於2018-07-21

題目描述

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

時間限制:1秒 空間限制:32768K 熱度指數:254265

解答:

import java.util.Stack;

public class Solution {//思路:將stack1當做入佇列,將stack2當做出佇列,當佇列需要push入佇列一個元素的時候,直接push到stack1就可以了;當佇列需要pop出佇列時
    //,首先判斷stack2是否為空,如果為空,則將stack1中的元素全部pop出來並依次push到stack2中,再讓stack2來pop一下就可以了;如果不為空,stack2直接pop一下就行。
    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.size() == 0) {
            while (!stack1.empty()) {
                stack2.push(stack1.pop());
            }
        }
        if (stack2.size() == 0) {//當stack1和stack2都長度為0的時候,執行到這裡還是會出現stack2的長度為0,所以要做異常處理
            System.out.println("stack1和stack2的長度都為0,不能進行pop操作,丟擲異常");
            return -1;
        }
        return stack2.pop();
    }
}

 

相關文章