C# 用队列实现栈

news2025/7/10 20:45:28

225 用队列实现栈

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

实现 MyStack 类:

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

注意:

你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 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 次 push、pop、top 和 empty
每次调用 pop 和 top 都保证栈不为空

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/implement-stack-using-queues

解决方案:

提供思路

队列模拟栈,其实一个队列就够了,那么我们先说一说两个队列来实现栈的思路。

队列是先进先出的规则,把一个队列中的数据导入另一个队列中,数据的顺序并没有变,并没有变成先进后出的顺序。

所以用栈实现队列, 和用队列实现栈的思路还是不一样的,这取决于这两个数据结构的性质。

但是依然还是要用两个队列来模拟栈,只不过没有输入和输出的关系,而是另一个队列完全用又来备份的!

用两个队列que1和que2实现队列的功能,que2其实完全就是一个备份的作用,把que1最后面的元素以外的元素都备份到que2,然后弹出最后面的元素,再把其他元素从que2导回que1。

上代码:

public class MyStack
{
    Queue<int> queue1;
    Queue<int> queue2;
    public MyStack()
    {
        queue1 = new Queue<int>();
        queue2 = new Queue<int>();
    }

    public void Push(int x)
    {
        queue2.Enqueue(x);
        while (queue1.Count != 0)
        {
            queue2.Enqueue(queue1.Dequeue());
        }
        Queue<int> queueTemp;
        queueTemp = queue1;
        queue1 = queue2;
        queue2 = queueTemp;
    }

    public int Pop()
    {
        return queue1.Count > 0 ? queue1.Dequeue() : -1;
    }

    public int Top()
    {
        return queue1.Count > 0 ? queue1.Peek() : -1;
    }

    public bool Empty()
    {
        return queue1.Count == 0;
    }
}

个人感悟:不明觉厉,虽然不知道有什么落地,但是感觉可能有用。

以上是碰到的第二百二十五题,后续持续更新。感觉对你有帮助的小伙伴可以帮忙点个赞噢!
在这里插入图片描述

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

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

相关文章

Java训练四

目录 一、简易计算器 二、购买电影票 三、计算平均分 四、厘米与英寸互转 一、简易计算器 使用静态方法模拟一个只能进行两个数加、减、乘、除的建议计算器。 package haha; import java.util.Scanner; public class Dog{ public static double jia(double a,double b)…

大语言模型LLM

目录 一、语言模型的发展 语言模型&#xff08;Language Model&#xff0c;LM&#xff09;目标是建模自然语言的概率分布&#xff0c;具体目标是构建词序列w1,w2,...,wm的概率分布&#xff0c;即计算给定的词序列作为一个句子出现可能的大小P(w1w2...wm)。但联合概率P的参数量…

Consul 容器服务更新与发现

Consul 容器服务更新与发现/docker 安全/ssl证书管理 文章目录 Consul 容器服务更新与发现/docker 安全/ssl证书管理一、consul详解1.consul模式2.consul关键特性 二、consul部署1.实验部署2.实验步骤consul服务器registrator服务器consul-templateconsul 多节点 三、Docker安全…

TDesign 中后台系统搭建

目录 1 模板安装2 启动项目3 添加页面总结 一般如果希望开发小程序&#xff0c;是要给使用的用户提供一套中后台系统来管理数据的。现在中后台系统开源项目也比较多&#xff0c;本篇我们介绍一个腾讯开源的TDesign模板。 1 模板安装 先要在电脑里安装好nodejs&#xff0c;搜索…

Qt 第二讲 登录框完善,登录成功后,进入新的界面;新建工程文件,默认提供的代码注释信息;前两讲思维导图

一&#xff0c;代码完善 头文件 #ifndef ZUOYE_H #define ZUOYE_H#include <QWidget> #include <QDebug> #include <QIcon> #include <QPushButton> #include <QLineEdit> #include <QLabel> //#include <QTextToSpeech>QT_BEGIN_…

idea23.1 翻译配置

目录 一、插件 二、配置 2.1.插件配置 2.2.阿里账号 2.2.1.账号注册 2.2.2.获取权限 2.3.idea配置 一、插件 在idea的【Settings】中&#xff0c;找到插件中心【Plugins】&#xff0c;搜索【Translation】&#xff0c;可以看到这个插件下载量最大且评分最高&#x…

【部署】让你的电脑多出一个磁盘来用!使用SSHFS将远程服务器目录挂载到Windows本地,挂载并共享服务器资源

让你的电脑多出一个磁盘来用&#xff01;---使用SSHFS将远程服务器目录挂载到Windows本地 1. 方法原理介绍2.SSHFS-Win使用教程—实现远程服务器磁盘挂载本地 由于日常主要用 Windows 系统&#xff0c;每次都得 ssh 到服务器上进行取资源&#xff08;本地磁盘不富裕&#xff09…

点赞!远眺售后团队又获客户感谢信!

杭州远眺科技有限公司成立于2013年&#xff0c;是浙江大学软件工程学科成果转化基地&#xff0c;作为国内首家为智慧应用类行业提供软件开发工具、行业应用内容和技术赋能服务的高科技公司。远眺科技始终以客户为核心&#xff0c;不断完善“产品、内容、服务”的客户赋能体系&a…

什么是事件循环Event Loop

一、含义 事件循环是指不断从任务队列中取出任务&#xff0c;并执行其对应的回调函数的过程。 二、事件循环流程 1.主线程执行同步任务&#xff0c;直到遇到异步任务时&#xff0c;将其回调函数他家到任务队列中&#xff0c;然后继续执行同步任务 2.当所有同步任务执行完之后&a…

UART中RTS和CTS流控学习总结

UART中RTS和CTS流控学习总结 目录 UART中RTS和CTS流控学习总结一、流控定义二、硬件流控过程分析 一、流控定义 流控&#xff1a;数据在两个串口之间进行通讯&#xff0c;常常会出现丢失数据的现象&#xff0c;比如当接收端数据缓冲区满了&#xff0c;而发送端还有数据发送过来…

Java读取配置文档cofing

文件结构 代码部分 import java.util.ResourceBundle;/*** Author:romulushe* Date:2022/11/9-11-09-9:18* Description:PACKAGE_NAME* version:1.0*/ public class read_config_test {public static String getConfigFileParamVal(String paramName) {ResourceBundle resourc…

商业密码应用安全性评估量化评估规则2023版更新点

《商用密码应用安全性评估量化评估规则》&#xff08;2023版&#xff09;已于2023年7月发布&#xff0c;将在8月1日正式执行。相比较2021版&#xff0c;新版本有多处内容更新&#xff0c;具体包括5处微调和5处较大更新。 微调部分&#xff08;5处&#xff09; 序号2021版本202…

重生之我要学C++第四天

这篇文章的主要内容是类的默认成员函数。如果对大家有用的话&#xff0c;希望大家三连支持&#xff0c;博主会继续努力&#xff01; 目录 一.类的默认成员函数 二.构造函数 三.析构函数 四.拷贝构造函数 五.运算符重载 一.类的默认成员函数 如果一个类中什么成员都没有&…

论述智慧消防在高层建筑信息化管理中的作用

安科瑞 华楠 【摘要】为了顺应时代的发展&#xff0c;我们做好信息化时代下的“智慧消防”工作&#xff0c;为“智慧城市”的建设奠定良好的基础。本文主要就“智慧消防”的含义、对如高层建筑等单位进行信息化“智慧消防”管理&#xff0c;当前消防管理工作中所存在的问题及如…

VUE使用docxtemplater导出word(带图片) 踩坑 表格循环空格 ,canvas.toDataURL图片失真模糊问题

参考&#xff1a;https://www.codetd.com/article/15219743 安装 // 安装 docxtemplater npm install docxtemplater pizzip --save // 安装 jszip-utils npm install jszip-utils --save // 安装 jszip npm install jszip --save // 安装 FileSaver npm install file-save…

Java集成微信公众号的事件回调, 解密的时候报错java.secwrity.InvalidKeyException: Illegal key size

java.secwrity.InvalidKeyException: Illegal key size 这是因为jar包的原因, 下载下面这个文件 https://download.csdn.net/download/dongyan3595/88103743 找到java的jre安装目录, 将jre/lib/security下的local_policy.jar、US_export_policy.jar 2个文件替换即可。

速度优化:重新认识速度优化

作者&#xff1a;helson赵子健 应用的速度优化是我们使用最频繁&#xff0c;也是应用最重要的优化之一&#xff0c;它包括启动速度优化&#xff0c;页面打开速度优化&#xff0c;功能或业务执行速度优化等等&#xff0c;能够直接提升应用的用户体验。因此&#xff0c;只要是 An…

小程序----配置原生内置编译插件支持sass

修改project.config.json配置文件 在 project.config.json 文件中&#xff0c;修改setting 下的 useCompilerPlugins 字段为 ["sass"]&#xff0c; 即可开启工具内置的 sass 编译插件。 目前支持三个编译插件&#xff1a;typescript、less、sass 修改之后可以将原.w…

Qt Core学习日记——第三天QMetaEnum(上)

QMetaEnum用来代表枚举信息,内部也是访问moc文件。从moc文件中得到对应值 需要在头文件中声明 Q_ENUM,如下红框部分 moc中qt_meta_stringdata_XTest变为&#xff1a; qt_meta_data_XTest变为 static const uint qt_meta_data_XTest[] { // content: 8, // revision 0, // …

继承中的访问级别

值得思考的问题 子类是否可以直接访问父类的私有成员&#xff1f; 思考过程 继承中的访问级别 面向对象中的访问级别不止是 public 和 private 可以定义 protected 访问级别 关键字 protected 的意义 修饰的成员不能被外界直接访问修饰的成员可以被子类直接访问 思考 为什…