0232. Implement Queue Using Stacks

0255. Implement Queue using Stacks #

题目 #

  • 使用两个栈实现一个先入先出的栈,支持普通队列的全部四种操作。
  • 实现 MyQueue 类:
    • void push(int x) 将元素 x 推到队列的末尾
    • int pop() 从队列的开头移除并返回元素
    • int peek() 返回队列开头的元素
    • boolean empty() 如果队列为空,返回 true;否则,返回 false

思路 #

使用两个栈实现队列 #

代码 #

使用两个栈实现队列 #

class MyQueue {
    Stack<Integer> inStack, outStack;
    
    public MyQueue() {
        this.inStack = new Stack<>();
        this.outStack = new Stack<>();
    }
    
    public void push(int x) {
        this.inStack.push(x);
    }
    
    public int pop() {
        if (this.outStack.size() == 0) {
            while (this.inStack.size() != 0) {
                this.outStack.push(this.inStack.pop());
            }
        }
        return this.outStack.pop();
    }
    
    public int peek() {
        if (this.outStack.size() == 0) {
            while (this.inStack.size() != 0) {
                this.outStack.push(this.inStack.pop());
            }
        }
        return this.outStack.peek();
    }
    
    public boolean empty() {
        return this.outStack.size() == 0 && this.inStack.size() == 0;
    }
}

致谢 #

力扣官方题解