当前位置: 首页 > news >正文

[LeetBook]【学习日记】图书整理 II——用两个栈实现队列

题目

图书整理 II
读者来到图书馆排队借还书,图书管理员使用两个书车来完成整理借还书的任务。书车中的书从下往上叠加存放,图书管理员每次只能拿取书车顶部的书。排队的读者会有两种操作:

  • push(bookID):把借阅的书籍还到图书馆。
  • pop():从图书馆中借出书籍。

为了保持图书的顺序,图书管理员每次取出供读者借阅的书籍是最早归还到图书馆的书籍。你需要返回每次读者借出书的值。

如果没有归还的书可以取出,返回 -1。

示例 1:

输入: [“BookQueue”, “push”, “push”, “pop”] [[], [1], [2], []]
输出:[null,null,null,1] 解释: MyQueue myQueue = new MyQueue();
myQueue.push(1); // queue is: [1] myQueue.push(2); // queue is: [1, 2]
(leftmost is front of the queue) myQueue.pop(); // return 1, queue is
[2]

提示:

1 <= bookID <= 10000 最多会对 push、pop 进行 10000 次调用

思考

  • 本题其实就是要求实现队列以及队列的入队函数和出队函数
  • 按题目的要求,实际上是要求使用两个栈(两个书车)来实现队列
  • 但是解法1 没用用栈

解法1:使用 vector 实现

class CQueue {vector<int> vec;int head=0;
public:CQueue() {}void appendTail(int value) {vec.push_back(value);}int deleteHead() {if(head<vec.size()){return vec[head++];}return -1;}
};/*** Your CQueue object will be instantiated and called as such:* CQueue* obj = new CQueue();* obj->appendTail(value);* int param_2 = obj->deleteHead();*/

解法2:使用 stack 实现

  • 本质上是用另一个栈实现对另一个栈中元素的倒序
  • 在倒序栈中,如果还有元素,在出队的时候直接 pop 即可,因为此时倒序栈中的元素还是较早入队的元素
  • 直到倒序栈中没有元素,再将顺序栈中的元素放入倒序栈
class CQueue {stack<int> a, b;
public:CQueue() {}void appendTail(int value) {a.push(value);}int deleteHead() {if(a.empty() && b.empty()) return -1;if(b.empty() && !a.empty()){while(!a.empty()){b.push(a.top());a.pop();} }int temp = b.top();b.pop();return temp;}
};/*** Your CQueue object will be instantiated and called as such:* CQueue* obj = new CQueue();* obj->appendTail(value);* int param_2 = obj->deleteHead();*/

相关文章:

[LeetBook]【学习日记】图书整理 II——用两个栈实现队列

题目 图书整理 II 读者来到图书馆排队借还书&#xff0c;图书管理员使用两个书车来完成整理借还书的任务。书车中的书从下往上叠加存放&#xff0c;图书管理员每次只能拿取书车顶部的书。排队的读者会有两种操作&#xff1a; push(bookID)&#xff1a;把借阅的书籍还到图书馆。…...

5G智能制造食品工厂数字孪生可视化平台,推进食品行业数字化转型

5G智能制造食品工厂数字孪生可视化平台&#xff0c;推进食品行业数字化转型。随着科技的飞速发展&#xff0c;食品工业正迎来一场前所未有的数字化转型。在这场转型中&#xff0c;5G智能制造工厂数字孪生可视化平台发挥着至关重要的作用。它不仅提高了生产效率&#xff0c;降低…...

一个系列很多样式的wordpress外贸建站模板

菌菇干货wordpress跨境电商模板 食用菌、羊肚菌、牛肝菌、香菇、干黄花菜、梅干菜、松茸wordpress跨境电商模板。 https://www.jianzhanpress.com/?p3946 餐饮调味wordpress跨境电商模板 豆制品、蛋黄糖、烘焙、咖啡、调料、调味酱、餐饮调味wordpress跨境电商模板。 http…...

Wireshark_labs TCP

在本实验中&#xff0c;我们将详细研究著名的TCP协议的行为。我们将通过从您的电脑向远程服务器传输一份150KB 的文件(一份Lewis Carrol 的“爱丽丝梦游仙境”文本)&#xff0c; 并分析TCP传输内容的发送和接收过程来实现。我们将研究TCP对序列和确认号的使用&#xff0c;以提供…...

Linux程序崩溃调试

一、简单点的 编译时主动带-g&#xff0c;生成的程序带调试信息&#xff0c;而且开启生成dump文件&#xff0c;这时候可以使用core dump来调试程序&#xff0c;定位问题。可以参考&#xff1a;linux 程序crash 调试、原因分析及问题定位-CSDN博客 二、稍微复杂点 假设生成的可执…...

Day37 socket、TCP、UDP

socket类型 流式套接字(SOCK_STREAM) TCP 提供了一个面向连接、可靠的数据传输服务&#xff0c;数据无差错、无重复的发送且按发送顺序接收。内设置流量控制&#xff0c;避免数据流淹没慢的接收方。数据被看作是字节流&#xff0c;无长度限制。 数据报套接字(SOCK_DGRAM) UD…...

从 Language Model 到 Chat Application:对话接口的设计与实现

作者&#xff1a;网隐 RTP-LLM 是阿里巴巴大模型预测团队开发的大模型推理加速引擎&#xff0c;作为一个高性能的大模型推理解决方案&#xff0c;它已被广泛应用于阿里内部。本文从对话接口的设计出发&#xff0c;介绍了业界常见方案&#xff0c;并分享了 RTP-LLM 团队在此场景…...

无人机|LQR控制算法及其无人机控制中的应用仿真

前言 LQR全称Linear Quadratic Regulator&#xff08;线性二次调节器&#xff09;&#xff0c;顾名思义用于解决形如 x ˙ A x B u y C x D u \begin{aligned}\dot{x}&AxBu\\y&CxDu\end{aligned} x˙y​AxBuCxDu​ 线性时不变系统的一种线性控制方法&#xff0c;…...

ubuntu环境下docker容器详细安装使用

文章目录 一、简介二、ubuntu安装docker1.删除旧版本2.安装方法一3. 安装方法二&#xff08;推荐使用&#xff09;4.运行Docker容器5. 配置docker加速器 三、Docker镜像操作1. 拉取镜像2. 查看本地镜像3. 删除镜像4. 镜像打标签5. Dockerfile生成镜像 四、Docker容器操作1. 获取…...

vue2源码分析-vue入口文件global-api分析

文章背景 vue项目开发过程中,首先会有一个初始化的流程,以及我们会使用到很多全局的api,如 this.$set this.$delete this.$nextTick,以及初始化方法extend,initUse, initMixin , initExtend, initAssetRegisters 等等那它们是怎么实现,让我们一起来探究下吧 源码目录 global-…...

Javascript原型 ,原型链如何理解使用 ?有什么特点?

文章目录 图解原型原型链总结有需要的请私信博主&#xff0c;还请麻烦给个关注&#xff0c;博主不定期更新&#xff0c;或许能够有所帮助&#xff01;&#xff01;请关注公众号 图解 原型 常被描述为 — 种基于原型的语言–每个对象拥有一个原型对象 当试图访问 一个对象的属性…...

Flutter混合栈管理方案对比

1.Google官方&#xff08;多引擎方案&#xff09; Google官方建议的方式是多引擎方案&#xff0c;即每次使用一个新的FlutterEngine来渲染Widget树&#xff0c;存在的主要问题是每个引擎都要有比较大的内存等资源消耗&#xff0c;虽然Flutter 2.0之后的FlutterEngineGroup通过在…...

Asp .Net Core 集成 Newtonsoft.Json

简介 Newtonsoft.Json是一个在.NET环境下开源的JSON格式序列化和反序列化的类库。它可以将.NET对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为.NET对象。这个类库在.NET开发中被广泛使用,因为它功能强大、易于使用,并且有良好的性能。 使用Newtonsoft.Json,…...

GPT对话知识库——ARM-Cortex架构分为哪几个系列?每个系列有几种工作模式?各种工作模式之间的定义和区别?每种架构不同的特点和应用需求?

目录 1&#xff0c;问&#xff1a; 1&#xff0c;答&#xff1a; 2&#xff0c;问&#xff1a; 2&#xff0c;答&#xff1a; Cortex-A系列 Cortex-R系列 Cortex-M系列 3&#xff0c;问&#xff1a; 3&#xff0c;答&#xff1a; ARM Cortex-A架构 ARM Cortex-R架构…...

795. 前缀和(acwing)

文章目录 795.前缀和题目描述前缀和 795.前缀和 题目描述 输入一个长度为n的整数序列。 接下来再输入m个询问&#xff0c;每个询问输入一对l, r。 对于每个询问&#xff0c;输出原序列中从第l个数到第r个数的和。 输入格式 第一行包含两个整数n和m。 第二行包含n个整数&a…...

1910_野火FreeRTOS教程阅读笔记_prvStartFirstTask函数

1910_野火FreeRTOS教程阅读笔记_prvStartFirstTask函数 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 这是教程中的一个函数&#xff0c;通过汇编来实现的。注释部分以及结合后面的讲解部分&#xff0c;可能还是有一点点细节的地方让初学者疑惑。我结合我自己的理解…...

图论练习5

Going Home Here 解题思路 模板 二分图最优匹配&#xff0c;前提是有完美匹配&#xff08;即存在一一配对&#xff09;左右集合分别有顶标&#xff0c;当时&#xff0c;为有效边&#xff0c;即选中初始对于左集合每个点&#xff0c;选择其连边中最优的&#xff0c;然后对于每…...

[C++] Volatile 和常量Const优化

Volatile的作用 volatile 表明某个变量的值可能在外部被改变&#xff0c;因此对这些变量的存取不能缓存到寄存器&#xff0c;每次使用时需要重新存取。 Const 和 Volatile的示例 示例1 int main() {const int a 1;int* pa const_cast<int*>(&a);*pa 4;cout &l…...

嵌入式学习day32 网络

htons()&#xff1b;//host to network short 将端口号转换为网络通信中的大端存储 eg:htons(50000); ntohs()&#xff1b;//host to network short 将大端存储转换为主机端口号 inet_addr();将IP地址转换为二进制 eg:inet_addr(192.168.1.170)&#xff1b; inet_ntoa()…...

算法D33 | 贪心算法3 | 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

1005.K次取反后最大化的数组和 本题简单一些&#xff0c;估计大家不用想着贪心 &#xff0c;用自己直觉也会有思路。 代码随想录 Python: class Solution:def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:nums.sort(keylambda x: abs(x), reverseT…...

CANopen协议学习与实践干货分享

CANopen协议代码&#xff0c;学习资料&#xff0c;包含CANfestival官方代码框架&#xff0c;官方字典生成工具&#xff0c;可自主设定心跳&#xff0c;pdo&#xff0c;sdo等内容参数&#xff0c;并包含已经移植完成的且带有详细注释的一个主站程序两个从站能正常通信&#xff0…...

你的电机仿真结果靠谱吗?聊聊Maxwell瞬态分析里那些容易被忽略的‘坑’

电机仿真精度提升指南&#xff1a;Maxwell瞬态分析中的关键细节与验证方法 当你在凌晨三点盯着屏幕上那条波动异常的转矩曲线时&#xff0c;是否曾怀疑过自己的仿真模型在说谎&#xff1f;作为从业十五年的电磁仿真专家&#xff0c;我见过太多工程师在项目验收前夜才发现仿真结…...

libtorrent会话管理终极指南:10个关键配置参数详解

libtorrent会话管理终极指南&#xff1a;10个关键配置参数详解 【免费下载链接】libtorrent an efficient feature complete C bittorrent implementation 项目地址: https://gitcode.com/gh_mirrors/li/libtorrent libtorrent是一个高效且功能完善的C BitTorrent实现&a…...

FastbootEnhance:Windows平台上最直观的Android刷机工具箱

FastbootEnhance&#xff1a;Windows平台上最直观的Android刷机工具箱 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance 如果你是一位Android发烧友…...

LLaMA-Omni推理部署全攻略:本地与云端部署的最佳实践

LLaMA-Omni推理部署全攻略&#xff1a;本地与云端部署的最佳实践 【免费下载链接】LLaMA-Omni LLaMA-Omni is a low-latency and high-quality end-to-end speech interaction model built upon Llama-3.1-8B-Instruct, aiming to achieve speech capabilities at the GPT-4o l…...

图像修复效率提升:设计师与开发者必备的7个开源AI模型应用技巧

图像修复效率提升&#xff1a;设计师与开发者必备的7个开源AI模型应用技巧 【免费下载链接】ComfyUI-BrushNet ComfyUI BrushNet nodes 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-BrushNet 在数字创作与内容修复领域&#xff0c;如何快速高效地消除图像瑕疵…...

OPCUA测试服务器权限问题排查与修复指南

1. 遇到BadUserAccessDenied错误怎么办&#xff1f; 最近在搭建OPCUA测试服务器时&#xff0c;不少小伙伴都遇到了BadUserAccessDenied这个烦人的错误。这个错误代码0x801f0000就像一扇紧闭的大门&#xff0c;明明服务器就在眼前&#xff0c;却因为权限问题无法访问关键数据。作…...

CCF-CSP 39-2 水印检查(watermark)【C++】

题目 https://sim.csp.thusaac.com/contest/39/problem/1https://sim.csp.thusaac.com/contest/39/problem/1 思路参考&#xff1a; 80分 暴力求解&#xff0c;遍历所有可能的k&#xff0c;检验是否满足条件&#xff0c;可得80分 时间复杂度&#xff1a;O(L*n^2)&#xff0…...

FLUX.小红书极致真实V2规模化落地:单节点支持10并发请求,QPS达2.1

FLUX.小红书极致真实V2规模化落地&#xff1a;单节点支持10并发请求&#xff0c;QPS达2.1 1. 项目简介 你是否曾经遇到过这样的困扰&#xff1a;想要生成小红书风格的高质量图片&#xff0c;但要么效果不够真实&#xff0c;要么生成速度太慢&#xff0c;要么显存不够用&#…...

从零构建:基于C语言的Modbus RTU从站驱动开发指南

1. Modbus RTU从站驱动开发入门指南 第一次接触Modbus RTU从站开发时&#xff0c;我完全被各种专业术语搞晕了。后来在工厂里调试一个温湿度传感器时&#xff0c;才真正理解这个协议的精妙之处——它就像车间里老师傅们约定俗成的对话方式&#xff0c;主设备问一句&#xff0c;…...