【Leetcode60天带刷】day10栈与队列—— 232.用栈实现队列,225. 用队列实现栈

news2024/11/19 17:36:15

 


  题目:

232. 用栈实现队列

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

实现 MyQueue 类:

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

说明:

  • 你 只能 使用标准的栈操作 —— 也就是只有 push to toppeek/pop from topsize, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

示例 1:

输入:
["MyQueue", "push", "push", "peek", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 1, 1, false]

解释:
MyQueue myQueue = new MyQueue();
myQueue.push(1); // queue is: [1]
myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)
myQueue.peek(); // return 1
myQueue.pop(); // return 1, queue is [2]
myQueue.empty(); // return false

提示:

  • 1 <= x <= 9
  • 最多调用 100 次 pushpoppeek 和 empty
  • 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)

 题解:

class MyQueue {
public:
    stack<int> stIn;
    stack<int> stOut;
    /** Initialize your data structure here. */
    MyQueue() {

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

    /** Removes the element from in front of queue and returns that element. */
    int pop() {
        // 只有当stOut为空的时候,再从stIn里导入数据(导入stIn全部数据)
        if (stOut.empty()) {
            // 从stIn导入数据直到stIn为空
            while(!stIn.empty()) {
                stOut.push(stIn.top());
                stIn.pop();
            }
        }
        int result = stOut.top();
        stOut.pop();
        return result;
    }

    /** Get the front element. */
    int peek() {
        int res = this->pop(); // 直接使用已有的pop函数
        stOut.push(res); // 因为pop函数弹出了元素res,所以再添加回去
        return res;
    }

    /** Returns whether the queue is empty. */
    bool empty() {
        return stIn.empty() && stOut.empty();
    }
};

题目:

225. 用队列实现栈

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppop 和 empty)。

实现 MyStack 类:

  • void push(int x) 将元素 x 压入栈顶。
  • int pop() 移除并返回栈顶元素。
  • int top() 返回栈顶元素。
  • boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。

注意:

  • 你只能使用队列的基本操作 —— 也就是 push to backpeek/pop from frontsize 和 is empty 这些操作。
  • 你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

示例:

输入:
["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 2, 2, false]

解释:
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // 返回 2
myStack.pop(); // 返回 2
myStack.empty(); // 返回 False

提示:

  • 1 <= x <= 9
  • 最多调用100 次 pushpoptop 和 empty
  • 每次调用 pop 和 top 都保证栈不为空

 题解:

class MyStack {
public:
    queue<int> que;
    /** Initialize your data structure here. */
    MyStack() {

    }
    /** Push element x onto stack. */
    void push(int x) {
        que.push(x);
    }
    /** Removes the element on top of the stack and returns that element. */
    int pop() {
        int size = que.size();
        size--;
        while (size--) { // 将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部
            que.push(que.front());
            que.pop();
        }
        int result = que.front(); // 此时弹出的元素顺序就是栈的顺序了
        que.pop();
        return result;
    }

    /** Get the top element. */
    int top() {
        return que.back();
    }

    /** Returns whether the stack is empty. */
    bool empty() {
        return que.empty();
    }
};

欢迎点赞,收藏,评论,你的鼓励就是我创作的最大动力!(๑╹◡╹)ノ"""

版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:渡梦酒的博客_CSDN博客-csdn领域博主

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/669760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot 集成 Redisson分布式锁

Redisson 是一种基于 Redis 的 Java 驻留集群的分布式对象和服务库&#xff0c;可以为我们提供丰富的分布式锁和线程安全集合的实现。在 Spring Boot 应用程序中使用 Redisson 可以方便地实现分布式应用程序的某些方面&#xff0c;例如分布式锁、分布式集合、分布式事件发布和订…

旷视研究院获 CVPR 2023 自动驾驶国际挑战赛 OpenLane Topology 赛道冠军

近日&#xff0c;为期三个月的 CVPR 2023 自动驾驶国际挑战赛比赛结果揭晓。旷视研究院在OpenLane Topology 赛道中击败 30 余支国内外队伍&#xff0c;夺得冠军。 自动驾驶技术已经渗透到人们的日常生活中&#xff0c;但是传统的感知方法仍不能满足大家对 L5 级自动驾驶的追逐…

傻瓜式教程--基于FPGA的CYUSB3014双向通信

一、概述 CYUSB3014是赛普拉斯在近几年推出的新一代USB3.0的外设控制器&#xff0c;可以解决USB2.0带宽限制&#xff0c;或者单独开发USB协议和驱动的难题。赛普拉斯将CYUSB3014简称为EZ-USB FX3&#xff0c;具有高度的灵活特性&#xff0c;开发人员只需要下载FX3的固件库&…

电脑死机怎么办?试试这5个方法!

案例&#xff1a;我的电脑用着用着突然死机了&#xff0c;我的文档写到了一半没有保存&#xff0c;不知道还能不能找回&#xff1f;电脑死机了怎么办&#xff1f;有没有小伙伴有应对的方法&#xff1f; 随着电脑在我们生活中的普及和广泛应用&#xff0c;电脑死机问题也成为了…

【Python】让 plotly 可视化更上一层:cufflinks 包

文章目录 一、导读二、安装三、使用方法四、数据说明五、折线图六、散点图七、气泡图八、柱状图九、箱型图box十、直方图十一、小提琴图十二、热力图heatmap十三、3d图十四、散点矩阵图十五、子图 一、导读 今天给大家推荐一个高级的可视化神器&#xff1a;cufflinks 学习过可…

智能汽车 | 为什么是高压,为什么800V?

摘要&#xff1a; 在谈到高压储能以及高压动力电池时候&#xff0c;有提到400V的&#xff0c;800V的&#xff0c;还有光伏储能用的1500V的&#xff1b;为什么是高压&#xff1f;本文做个总结。 1、李想看高压系统架构 今春李想的发言&#xff0c;从用户需求&#xff0c;市场需…

vue elementUI封装的无限多级导航菜单(递归循环)

需要封装成两个文件&#xff1a; menu/index.vue <template><el-menuclass"box-card"unique-opened:collapse"$store.state.isCollapse":default-active"$store.state.nowPage"background-color"#2f3332"text-color"…

浅谈电力通信与泛在电力物联网技术的应用与发展

安科瑞 崔丽洁 摘要&#xff1a;随着我国社会经济的快速发展&#xff0c;我国科技实力得到了巨大的提升&#xff0c;当前互联网通信技术在社会中得到了广泛的应用。随着电力通信技术的快速发展与更新&#xff0c;泛在电力物联网建设成为电力通讯发展的重要方向。本文已泛在电力…

股票量化分析工具QTYX使用攻略——每日涨停数据选股(更新2.6.6)

搭建自己的量化系统 如果要长期在市场中立于不败之地&#xff01;必须要形成一套自己的交易系统。 如何学会搭建自己的量化交易系统&#xff1f; 边学习边实战&#xff0c;在实战中学习才是最有效地方式。于是我们分享一个即可以用于学习&#xff0c;也可以用于实战炒股分析的量…

深入剖析Java 8的Stream并行原理,加速你的程序!

大家好&#xff0c;我是小米&#xff0c;在本期技术分享中&#xff0c;我将为大家详细介绍JDK1.8中的Stream以及它的并行操作原理。Stream是Java 8引入的一个强大的数据处理工具&#xff0c;可以让我们以一种简洁、高效的方式对集合数据进行操作和处理。接下来&#xff0c;我们…

C++初阶—模板进阶

目录 1. 非类型模板参数及容器arrary 2. 模板的特化 2.1 概念 2.2 函数模板特化 2.3 类模板特化 2.3.1 全特化 2.3.2 偏特化 2.3.3 类模板特化应用示例 3. 模板分离编译 3.1 什么是分离编译 3.2 模板的分离编译 3.3 解决方法 4. 模板总结 1. 非类型模板参数及容器a…

K8S:二进制安装K8S(单台master)安装etcd和master

系列文章目录 文章目录 系列文章目录一、安装K8S1.系统初始化配置2.部署docker引擎3.部署etcd集群 二、1.2. 总结 一、安装K8S 1.系统初始化配置 注意&#xff1a;该操作在所有node节点上进行&#xff0c;为k8s集群提供适合的初始化部署环境 #所有节点执行 systemctl stop f…

SSM长白山旅游网站-计算机毕设 附源码87175

SSM长白山旅游网站 目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3 论文结构与章节安排 2 长白山旅游网站系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2…

编译原理笔记9:语法分析树、语法树、二义性的消除

目录 语法分析树分析树与语言和文法的关系 语法树二义性及二义性的消除二义性问题优先级、结合性&#xff1a;引起二义性的根本原因【悬空&#xff08;dangling&#xff09;else】 问题 二义性的消除1. 改写二义文法为非二义文法让我们来搞【悬空 else 】罢&#xff01; 2. 规定…

数据分析年轻人的消费动向,小红书盲盒营销怎么玩?

一、ESG营销视角&#xff1a;Z世代年轻价值观的转向 近期&#xff0c;深受品牌方热议的ESG营销是什么呢&#xff1f; ESG 是 Environment&#xff08;环境&#xff09;、Society&#xff08;社会&#xff09; 和 Governance&#xff08;治理&#xff09;的缩写&#xff0c;是…

【openvpn】TAP模式

TAP与TUN模式简介 在OpenVPN中有两种工作模式&#xff0c;一种称为 TUN(tunnel)模式&#xff0c;即通道的意思&#xff1b;另一种是TAP(Terminal Access Point)模式&#xff0c;即一种网络设备或软件虚拟设备的意思。 TUN模式是一种虚拟点对点的网络设备模式。通常用于实现点…

即视角|出海正当时:欧美、东南亚、中东、拉美市场观察

即视角 Insight 共享即构新洞察&#xff0c;共建行业新动能——ZEGO即构科技基于音视频技术领域的多年深耕&#xff0c;综合面向各行业的服务经验&#xff0c;推出【即视角】栏目&#xff0c;发布即构对行业的洞察。欢迎大家探讨论道&#xff0c;共驱前行。 https://v.douyin…

【Note9】

9.PECI&#xff08;Platform Environment Control Interface&#xff09;&#xff1a;peci是 intel提供的私有协议&#xff0c;openbmc是由intel授权的&#xff0c;其他不授权是不能用。硬件上是一根线&#xff0c;不像i2c是2根线 11.1 模式和命令介绍&#xff1a;peci1.1只支…

华为OD机试之拔河比赛(Java源码)

文章目录 拔河比赛题目描述输入描述输出描述示例代码 拔河比赛 题目描述 公司最近准备进行拔河比赛&#xff0c;需要在全部员工中进行挑选。 选拔的规则如下&#xff1a; 按照身高优先、体重次优先的方式准备比赛阵容&#xff1b;规定参赛的队伍派出10名选手。 请实现一个选…

Imagination如何引领更安全的汽车行业?

如果您想购买一款全新的车辆&#xff0c;它很有可能配备数字显示屏&#xff0c;为用户体验提供丰富的驾驶体验&#xff0c;并可自由设置显示。想要更动感的仪表盘&#xff1f;那也没问题&#xff0c;只需改变驾驶主题。亦或是把音乐放在居中位置&#xff0c;同时在另一个屏幕上…