如何用栈实现队列(栈和队列的应用场景)

题目

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

实现 MyQueue 类:

void push(int x) 将元素 x 推到队列的末尾

int pop() 从队列的开头移除并返回元素

int peek() 返回队列开头的元素

boolean empty() 如果队列为空,返回 true ;否则,返回 false

来源:力扣(LeetCode)

链接:
https://leetcode-cn.com/problems/implement-queue-using-stacks

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码

/**
 * https://leetcode-cn.com/problems/implement-queue-using-stacks/
 */
class MyQueue {
    Deque<Integer> inStack;
    Deque<Integer> outStack;
    /** Initialize your data structure here. */
    public MyQueue() {
        inStack = new LinkedList<>();
        outStack = new LinkedList<>();
    }
    /** Push element x to the back of queue. */
    public void push(int x) {
        inStack.push(x);
    }
    /** Removes the element from in front of queue and returns that element. */
    public int pop() {
        if (outStack.isEmpty()) {
            inStack2outStack();
        }
        return outStack.pop();
    }
    /** Get the front element. */
    public int peek() {
        if (outStack.isEmpty()) {
            inStack2outStack();
        }
        return outStack.peek();
    }
    /** Returns whether the queue is empty. */
    public boolean empty() {
        return inStack.isEmpty() && outStack.isEmpty();
    }
    private void inStack2outStack() {
        while (!inStack.isEmpty()) {
            outStack.push(inStack.pop());
        }
    }
}

总结

* 这是一个非常常见的题目,栈的特性是先入后出,队列的特性是先入先出。因此,我们可以用两个栈来实现队列,inStack记录输入,outStack记录输出,以上代码巧妙的地方是在outStack为空的时候,将inStack的数据输入进去。

版权声明:本文图片和内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送联系客服 举报,一经查实,本站将立刻删除,请注明出处:https://www.4kpp.com/7266.html

(0)
漫空客漫空客
上一篇 2023年4月23日
下一篇 2023年4月23日

相关推荐

  • 抵价券(抵价券做赞助礼品)

    橙柿精彩生活,就在什么都有的橙友圈。 每日发帖打卡,分享日常,还有机会获得惊喜福利! 新上线 浙江去哪玩·直播中国·第二站:土生土长的大眼新疆姑娘陪你去新疆喀什古城“压马路” 活动…

    投稿 2023年4月23日
    1070
  • 千岛湖自驾二日游(千岛湖三个必逛景点)

    今天给大家分享一个关于千岛湖自驾游两日游(千岛湖必游三大景点)的问题。以下是这个问题的总结。让我们来看看。 千岛湖两日自驾游 千岛湖位于浙江省杭州市淳安县。它是一个大型人工湖,被许…

    投稿 2023年4月23日
    1800
  • 上古卷轴5 黄金爪(上古卷轴5黄金爪代码)

    今天小编给各位分享上古卷轴5 黄金爪(上古卷轴5黄金爪代码),如果能碰巧解决你现在面临的问题,别忘了关注小站,我们一起开始吧! 《上古卷轴5》如何买房 头盔城-赫利姆 做男爵有帮助…

    投稿 2023年4月23日
    1530
  • 中元节前后几天可以烧纸(中元节前后几天可以烧纸给过世的老人)

    今天给大家分享一下中秋节前后几天可以烧纸的知识,也说明一下中秋节前后几天可以给去世的老人烧纸。如果你碰巧解决了你现在面临的问题,别忘了关注这个网站,现在就开始! 2021年中秋节前…

    投稿 2023年4月23日
    2380
  • 聚划算搜索(聚划算搜索在哪里)

    【TechWeb】6月6日消息,聚划算百亿补贴今天启动“66盛典”,作为天猫618的重磅活动,聚划算百亿补贴的官方直播间将再度刷新价格底线。 根据官方的介绍,电动牙刷、星巴克咖啡、…

    投稿 2023年4月23日
    1090
  • 代办广州公司注册一般多少钱(广州代理注册公司价格)

    代理公司注册的费用根据公司注册资本的不同而不同。以注册10万元的公司为例,所有费用合计约为2628元,50万元的注册资金,则大概是3820元,100万元的合计费用是4808元等 &…

    投稿 2023年4月23日
    890
  • 巧克力放久了长白霜是变质了吗 巧克力能放多长时间

    我们会发现巧克力放久了会长白霜,其实这并不是变质了,分为糖霜和脂霜,还是可以安全吃的,但是巧克力也是有保质期的,巧克力能放多长时间?下面八宝网小编就带来介绍。 巧克力放久了长白霜是…

    2023年4月23日
    2600
  • 微波炉电路图(微波炉的工作原理图解)

    微波炉电路图(微波炉的工作原理图解) 在使用微波炉进行食物加热时大家知道微波炉的工作原理是什么吗?说到微波炉原理图比较专业的人员应该都了解这是什么东西,有了微波炉原理图我们就能够大…

    2023年4月22日
    1520
  • 如何制造生日惊喜(如何制造一个浪漫的生日惊喜)

    今天我就来介绍一下如何打造生日惊喜,如何打造浪漫的生日惊喜。希望对你有帮助,也别忘了收藏这个站点。 一个好朋友想在她的生日给她一个惊喜。她该怎么办? 实际上,以前过生日都是这样的。…

    投稿 2023年4月23日
    1420
  • 直销银行什么意思(直销银行的好处与坏处)

    早安,在新雨恍若春的乡间问候各位 直销银行是个啥?近期,邮储银行公告说,已经获得直销银行牌照,获准成立子公司邮惠万家银行,这是继中信百信银行和招商拓扑银行之后的第三家直销银行。 直…

    投稿 2023年4月23日
    1080

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注