[toc]

题目描述

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

思路和解法

  • 栈的特性是先进后出
  • 队列的特性是先进先出

有两个栈stack1,stack2
如果有新的数据进入,那么我们可以直接push到stack1;
如果需要取出数据,那么我们优先取出stack2的数据,如果stack2里面数据是空的,那么我们需要把所有的stack1的数据倒入stack2。再从stack2取数据。

例如:
(1). push 1--> push 2

(2).pop 1

(3). push 3--> push 4

(4).pop 2

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

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

纵然缓慢,驰而不息。