用两个栈实现队列

  • 题目描述:

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

  • 解题思路:
  • 用两个栈实现队列的效果,先搞清两者的区别,栈是先进后出,队列则是先进先出,从这一点上看,如果想让栈中先进的先出来,就必须“倒腾”一下,就像拿一打羽毛球的的筒子中最底下那个羽毛球,需要把所有的羽毛球倒出来到另一个筒内才能拿到最底下的,所以stack1用来正常存放元素,stack2则充当把元素全部“道”出来的辅助栈,把stack1的元素从上到下全部放入stack2中,stack2中的元素排序则是从下到上,此时直接弹出 stack2的元素就可以了。
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()){
            return stack2.pop();
        }else{
             while(!stack1.empty()){
             stack2.push(stack1.pop());
             }
             if(!stack2.empty()){
              return stack2.pop();
             }
        }
        return  -1;
     }
}

你可能感兴趣的:(算法题解)