• 00005.用两个栈模拟队列
  • 发布于 1个月前
  • 28 热度
    0 评论

题目描述:

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

解题思路:

栈的操作特点:先进后出

队列的操作特点:先进先出

栈模拟队列,先进后出,再进后出不刚好是先进先出。所以如图:


入栈就是将栈1直接入栈即可,出栈的时候将栈1出的元素入到栈2中,然后栈2出栈即可。

不废话。上代码:

import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    //栈1直接入栈即可
    public void push(int node) {
        stack1.push(node);
    }
    
    public int pop() {
        //特殊值处理
        if(stack1.empty() && stack2.empty()) {
            throw new RuntimeException("SB元素,特么俩空。");
        }
        
        if(stack2.empty()) {
            //只要栈1不为空
            while(!stack1.empty()) {
                //栈1出的元素给栈2入栈
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }
}


用户评论