美文网首页
LeetCode_225 用队列实现栈

LeetCode_225 用队列实现栈

作者: monkey01 | 来源:发表于2018-12-06 19:38 被阅读22次

题目地址:https://leetcode-cn.com/problems/implement-stack-using-queues/

题目:

使用队列实现栈的下列操作:

  • push(x) -- 元素 x 入栈
  • pop() -- 移除栈顶元素
  • top() -- 获取栈顶元素
  • empty() -- 返回栈是否为空

试题分析:

这道题和232这道题一样,只是数据结构反过来实现,利用队列来实现栈,实现原理也是雷同,都是通过两个队列来实现堆栈的FILO的功能,在操作上也是一个进队列一个出队列,每次在push和pop的时候都要进行循环的在两个队列中导出导入,232和225在面试过程中是非常常见的一道算法题,能够考验你对队列和栈的特性理解和灵活使用。

public class ImplementStackUsingQueues_225 {
    private Queue<Integer> queueIn;
    private Queue<Integer> queueOut;

    /** Initialize your data structure here. */
    public ImplementStackUsingQueues_225() {
        queueIn = new LinkedBlockingQueue<Integer>();
        queueOut = new LinkedBlockingQueue<Integer>();
    }

    /** Push element x onto stack. */
    public void push(int x) {
        while(!queueOut.isEmpty()){
            queueIn.add(queueOut.poll());
        }
        queueIn.add(x);
    }

    /** Removes the element on top of the stack and returns that element. */
    public int pop() {
        while(!queueOut.isEmpty()){
            queueIn.add(queueOut.poll());
        }
        int length = queueIn.size();
        for(int i=0;i<length-1;i++){
            queueOut.add(queueIn.poll());
        }
        return queueIn.poll();
    }

    /** Get the top element. */
    public int top() {
        while(!queueOut.isEmpty()){
            queueIn.add(queueOut.poll());
        }
        int length = queueIn.size();
        for(int i=0;i<length-1;i++){
            queueOut.add(queueIn.poll());
        }
        int result = queueIn.peek();
        queueOut.add(queueIn.poll());
        return result;
    }

    /** Returns whether the stack is empty. */
    public boolean empty() {
        return queueIn.isEmpty() && queueOut.isEmpty();
    }
}

源码路径:com.monkey01.queue.ImplementStackUsingQueues_225

配套测试代码路径:test目录com.monkey01.queue.ImplementStackUsingQueues_225Test

https://github.com/feiweiwei/LeetCode4Java.git

相关文章

  • LeetCode_225 用队列实现栈

    题目地址:https://leetcode-cn.com/problems/implement-stack-usi...

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • leecode刷题(26)-- 用栈实现队列

    leecode刷题(26)-- 用栈实现队列 用栈实现队列 使用栈实现队列的下列操作: push(x) -- 将一...

  • C语言第七次作业:链表

    707. 设计链表 空指针 空节点 225. 用队列实现栈 链式存储栈 双队列实现栈 232. 用栈实现队列 链式...

  • 队列之-队列实现栈

    一、队列实现栈核心算法概述 之前已经描述过了用栈实现队列的功能,见栈系列之-实现队列,那么同样队列也可以用来实现栈...

  • 38_两个有趣的问题

    关键词:通过栈实现队列、通过队列实现栈 0. 通过栈实现队列 用栈实现队列等价于用后进先出的特性实现先进先出的特性...

  • 栈&队列

    一、栈&队列总结 栈/队列的应用接雨水验证栈序列滑动窗口的最大值 栈/队列的特殊实现用两个栈实现队列用两个队列实现...

  • 面试题9: 用两个栈实现队列

    9-1 用两个栈实现队列 9-2 用两个队列实现栈

  • LeetCode 每日一题 [12] 用队列实现栈

    LeetCode 用队列实现栈 [简单] 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈pop(...

  • Python学习教程:用队列实现栈

    接着上一期跟大家说的用栈实现队列,这期的Python学习教程跟大家讲用队列实现栈 题目:使用队列实现栈的下列操作:...

网友评论

      本文标题:LeetCode_225 用队列实现栈

      本文链接:https://www.haomeiwen.com/subject/kuhacqtx.html