美文网首页
40. 用栈实现队列

40. 用栈实现队列

作者: 6默默Welsh | 来源:发表于2018-03-10 15:01 被阅读55次

描述

正如标题所述,你需要使用两个栈来实现队列的一些操作。
队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。
pop和top方法都应该返回第一个元素的值。

样例

比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2

挑战

仅使用两个栈来实现它,不使用任何其他数据结构,push,pop 和 top的复杂度都应该是均摊O(1)的

思路

队列加入元素即往栈2里添加元素,如果队列要抛出和查询队列顶端元素,先检查栈1是否为空,如不为空直接对栈1操作,若栈1为空则需要先把元素从栈2转移到栈1中然后再进行抛出和查询操作

代码

public class MyQueue {
    private Stack<Integer> stack1;
    private Stack<Integer> stack2;

    public MyQueue() {
       // do initialization if necessary
       stack1 = new Stack<Integer>();
       stack2 = new Stack<Integer>();
    }
    
    private void stack2ToStack1(){
        while (! stack2.isEmpty()){
            stack1.push(stack2.pop());
        }
    }
    
    public void push(int element) {
        stack2.push(element);
    }

    public int pop() {
        if (stack1.empty() == true){
            this.stack2ToStack1();
        }
        return stack1.pop();
    }

    public int top() {
        if (stack1.empty() == true){
            this.stack2ToStack1();
        }
        return stack1.peek();
    }
}

相关文章

  • 40. 用栈实现队列

    40. 用栈实现队列 描述 笔记 数据 评测 正如标题所述,你需要使用两个栈来实现队列的一些操作。 队列应支持pu...

  • 数据结构——栈和队列

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

  • 40. 用栈实现队列

    描述 正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 t...

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

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

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

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

  • lintcode 40. 用栈实现队列

    难度:中等 1. Description 2. Solution python用两个栈,十分巧妙。 3. Refe...

  • 队列之-队列实现栈

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

  • 38_两个有趣的问题

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

  • 栈&队列

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

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

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

网友评论

      本文标题:40. 用栈实现队列

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