1. 程式人生 > >劍指offer-用棧實現佇列-java

劍指offer-用棧實現佇列-java

題目描述:

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

思路解析:

  • 入棧:棧1是用來入棧的,棧2是輔助;
  •           如果棧2是空的,直接入棧到棧1中,如果棧2不為空,那麼就先把棧2中的push回棧1中,再入棧。
  • 出棧:棧2是用來出棧的,棧1是輔助;
  •           如果棧1是非空的,要把棧1的都push到棧2中,如果棧1是空的,那麼直接push到棧2中。

程式碼:

import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    public void push(int node) {
        while(!stack2.isEmpty()){
            stack1.push(stack2.pop());
        }
        stack1.push(node);
    }
    
    public int pop() {
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
        return stack2.pop();
    }
}