用2个栈实现队列

题目

牛客网题目地址

代码

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.isEmpty()){
        while(!stack1.isEmpty()){
            stack2.push(stack1.peek());
            stack1.pop();
        }
    }
        int ret = stack2.peek();
        stack2.pop();
        return ret;
    }
}

思路

2个栈实现一个队列,由于队列是先进先出,栈是先进后出的。
1.push方法入栈就是直接将数据push进stack1。
2.pop方法就要分情况,如果stack2为空,就把stack1的元素全都push进stack2,然后peek栈顶元素。如果stack2不为空,就直接peek栈顶元素就可以。

总结

题目比较简单,就是把栈1的元素输入到栈2,就变成正向排序了。

上一篇:【Springboot】Spring与Springboot简介


下一篇:常考数据结构与算法:表达式求值