Java 求解用栈实现队列

Posted 南淮北安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 求解用栈实现队列相关的知识,希望对你有一定的参考价值。

一、题目

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):

实现 MyQueue 类:

  • void push(int x) 将元素 x 推到队列的末尾
  • int pop() 从队列的开头移除并返回元素
  • int peek() 返回队列开头的元素
  • boolean empty() 如果队列为空,返回 true ;否则,返回 false

二、代码


class MyQueue {
    Deque<Integer> deque1;
    Deque<Integer> deque2;

    /**
     * Initialize your data structure here.
     */
    public MyQueue() {
        deque1 = new LinkedList<>();
        deque2 = new LinkedList<>();
    }

    /**
     * Push element x to the back of queue.
     */
    public void push(int x) {
        deque1.push(x);
    }

    /**
     * Removes the element from in front of queue and returns that element.
     */
    public int pop() {
        if (deque2.isEmpty()) {
            while (!deque1.isEmpty()) {
                deque2.push(deque1.pop());
            }
        }
        return deque2.pop();
    }

    /**
     * Get the front element.
     */
    public int peek() {
        if (deque2.isEmpty()) {
            while (!deque1.isEmpty()) {
                deque2.push(deque1.pop());
            }
        }
        return deque2.peek();
    }

    /**
     * Returns whether the queue is empty.
     */
    public boolean empty() {
        return deque2.isEmpty() && deque1.isEmpty();
    }
}

以上是关于Java 求解用栈实现队列的主要内容,如果未能解决你的问题,请参考以下文章

精选力扣500题 第27题 LeetCode 232. 用栈实现队列c++ / java 详细题解

用栈实现队列,用队列实现栈,最小栈,设计循环队列的Java做法

LeetCode Java刷题笔记—232. 用栈实现队列

Java编程用栈来求解汉诺塔问题的代码实例(非递归)_java - JAVA

代码随想录算法训练营第10天 | ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈

数据结构用栈实现队列