【手撕代码】剑指offer-用两个栈实现队列

描述

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

解题思路

栈操作的特点:先进后出
队列操作的特点:先进先出
如果用栈实现队列则需要将栈中的所有元素出栈一次从而拿到最先入栈的那个元素,入栈操作则需要将上述过程反转过来才可以将元素放到队列尾部。那什么情况下可以不这么复杂,正好此处有两个栈,那么他们可不可以一个负责队列入队offer操作,一个负责队列出队poll操作。

import java.util.Stack;

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

你可能感兴趣的:(剑指Offer,数据结构与算法,栈,队列,数据结构,算法)