剑指Offer_5

题目

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

解题思路

两个栈,一个主栈,一个辅助栈。

主栈:负责pop出队操作
副栈:负责push入队操作

因为队列是先进先出,而栈是后进先出,两者顺序相反,所以利用在数据在两个栈里面走一遍,实现了队列的先进先出的顺序。当主栈里的元素为空时,就可以去副栈里索取数据。

import java.util.Stack;

public class Solution {
    private Stack<Integer> mainStack = new Stack<>();
    private Stack<Integer> auxStack = new Stack<>();

    public Integer pop(){
        if(mainStack.isEmpty()){
            while (!auxStack.isEmpty()){
                mainStack.push(auxStack.pop());
            }
        }
        if(mainStack.isEmpty()){
            return Integer.MIN_VALUE;
        }
        else{
            return mainStack.pop();
        }
    }

    public void push(Integer item){
        auxStack.push(item);
    }

}