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

【LeetCode刷题日记】23:用栈实现队列

个人主页北极的代码欢迎来访作者简介java后端学习者❄️个人专栏苍穹外卖日记SSM框架深入JavaWeb✨命运的结局尽可永在不屈的挑战却不可须臾或缺摘要本文介绍如何使用两个栈实现队列功能。通过维护输入栈(stackIn)和输出栈(stackOut)在push操作时直接压入输入栈pop/peek操作时若输出栈为空则将输入栈元素全部转移至输出栈从而实现队列的先进先出特性。关键点在于延迟倒腾策略保证每个元素只被转移一次使操作均摊时间复杂度为O(1)。文章包含完整Java实现代码展示了push、pop、peek和empty等核心方法的实现逻辑。题目背景LeetCode232可直达使用栈实现队列的下列操作push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。示例:MyQueue queue new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // 返回 1 queue.pop(); // 返回 1 queue.empty(); // 返回 false说明:你只能使用标准的栈操作 -- 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你所使用的语言也许不支持栈。你可以使用 list 或者 deque双端队列来模拟一个栈只要是标准的栈操作即可。假设所有操作都是有效的 例如一个空的队列不会调用 pop 或者 peek 操作题目解析这道题目是最基础的栈的灵活应用我们要用栈去实现队列我们已经知道栈是先进后出而队列是先进先出使用栈来模拟队列的行为如果仅仅用一个栈是一定不行的所以需要两个栈一个输入栈一个输出栈这里要注意输入栈和输出栈的关系。如图所示我们的输入栈和输出栈实现的就是这个效果在push数据的时候只要数据放进输入栈就好但在pop的时候操作就复杂一些输出栈如果为空就把进栈数据全部导入进来注意是全部导入再从出栈弹出数据如果输出栈不为空则直接从出栈弹出数据就可以了。最后如何判断队列为空呢如果进栈和出栈都为空的话说明模拟的队列为空了。优点高效每个元素只倒腾一次均摊 O(1)延迟倒腾只有在stackOut为空时才倒腾避免频繁操作简单可靠逻辑清晰不易出错栈职责操作stackIn负责入队只做push元素都先放这里stackOut负责出队只做pop和peek元素从这里出去对比直接用栈的缺点如果每次pop都把stackIn全部倒出来再倒回去时间复杂度就是 O(n)这种延迟倒腾的设计避免了这个问题。【队列状态】 队首 ←─────────── 队尾 1 2 3 【两个栈的存储】 stackIn: [1, 2, 3] ← 3是栈顶后进 ↓ 倒腾 stackOut: [3, 2, 1] ← 1是栈顶先出 【操作流程】 push(1) → push(2) → push(3) stackIn: 1,2,3 ↓ peek() / pop() → dumpstackIn() stackIn倒进stackOut ↓ stackOut: 3,2,1 ↓ pop() → 1 ✅ 先进先出用两个栈模拟队列stackIn负责收元素stackOut负责出元素只有当stackOut为空时才把stackIn的全部倒进去这样就能把栈的 LIFO 变成队列的 FIFO。题目答案class MyQueue { StackInteger stackIn; StackInteger stackOut; /** Initialize your data structure here. */ public MyQueue() { stackIn new Stack(); // 负责进栈 stackOut new Stack(); // 负责出栈 } /** Push element x to the back of queue. */ public void push(int x) { stackIn.push(x); } /** Removes the element from in front of queue and returns that element. */ public int pop() { dumpstackIn(); return stackOut.pop(); } /** Get the front element. */ public int peek() { dumpstackIn(); return stackOut.peek(); } /** Returns whether the queue is empty. */ public boolean empty() { return stackIn.isEmpty() stackOut.isEmpty(); } // 如果stackOut为空那么将stackIn中的元素全部放到stackOut中 private void dumpstackIn(){ if (!stackOut.isEmpty()) return; while (!stackIn.isEmpty()){ stackOut.push(stackIn.pop()); } } }结语如果对你有帮助请点赞关注收藏你的支持就是我最大的鼓励

相关文章:

【LeetCode刷题日记】23:用栈实现队列

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...

机器学习安全挑战与防御实践

1. 机器学习安全性的本质挑战当我们在2023年训练一个百亿参数规模的神经网络时,模型在测试集上的准确率已经不再是唯一需要关注的指标。去年某知名实验室的对话模型在部署后产生了不符合预期的行为模式,这个案例暴露出当前AI系统存在的深层安全隐患——模…...

高性能计算与AI融合:HPC SDK 24.3与NVIDIA工具链解析

1. 高性能计算与AI融合的技术演进在当今计算领域,我们正见证着一个前所未有的技术融合时代。传统的高性能计算(HPC)与新兴的人工智能技术正在相互促进,创造出全新的计算范式。作为一名长期从事加速计算开发的工程师,我…...

【收藏备用】2026年AI人才市场需求爆发,企业更看重实践能力而非学历(小白/程序员必看大模型学习指南)

2026年,AI行业迎来新一轮爆发式增长,大模型技术的普及的落地,让AI人才成为企业争抢的核心资源。不同于以往“唯学历论”的招聘导向,今年多数企业在AI人才招聘中,更看重求职者的实践能力、项目经验和技术落地能力&#…...

【数组结构与算法分析】一篇搞懂:栈与队列的底层实现原理与接口体系

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...

算法时代的坐骑:在亚马逊,为何“选对赛道”远胜于“埋头苦干”

许多在亚马逊世界里感到前途迷茫的聪明人,其第一反应往往是“更加努力”——投入更多时间优化广告、研究更多黑科技、熬夜处理更多订单。他们深信,只要工作比旁人更拼命,名望与财富便会随之而来。然而,真相恰恰相反。在亚马逊这场…...

第44篇:AI内容审核与安全——平台如何用AI过滤违规信息?(原理解析)

文章目录现象引入:当内容洪流遇上“红线”提出问题:AI内容审核的三大核心挑战原理剖析:多层联动的AI审核技术栈第一层:文本审核——从词法到语义的理解第二层:图像审核——从像素到概念的解析第三层:视频与…...

新型隐形眼镜利用微流控技术:实时监测眼压,自动给药治疗青光眼!

隐形眼镜新突破:监测与治疗青光眼 一种新型隐形眼镜设计利用微流控技术来测量青光眼患者的眼压,并自动给药。全球有超过 8000 万人患有青光眼,这使其成为全球第二大常见致盲原因。这种疾病由眼内压升高损害视神经引起,目前无法治愈…...

PyTorch实现线性回归:从基础到实战

1. 线性预测的基础概念线性预测是机器学习中最基础也最重要的建模方式之一。在PyTorch框架中实现线性预测模型,不仅能够帮助我们理解深度学习的底层原理,也是掌握更复杂神经网络架构的必要前提。线性模型的核心思想可以用一个简单的数学公式表示&#xf…...

自助服务转型:人机协同的未来商业服务模式

1. 自助服务时代的终结:一场商业范式的深度变革过去十五年里,我们见证了自助服务模式从零售业蔓延到SaaS平台、从机场值机渗透至银行开户的全面爆发。但最近三年,一种反直觉的趋势正在全球商业领域悄然形成——在硅谷科技公司的用户调研中&am…...

别只当故事看!聊聊科幻小说如何帮你理解AI和Web3的未来趋势

科幻小说:技术人的未来思维沙盘与创新指南 当刘慈欣在《三体》中描绘"黑暗森林"法则时,他不仅创造了一个宇宙社会学理论,更为现实中的AI伦理讨论提供了绝佳的思维实验场。技术从业者正逐渐发现,那些曾被视作娱乐读物的科…...

Stable Diffusion入门指南:从环境搭建到AI绘画实战

1. 从零开始理解AI绘画技术作为一名数字艺术创作者,我最初接触Stable Diffusion时完全被它的能力震撼了。这个开源模型能够根据文字描述生成令人惊叹的视觉作品,彻底改变了传统数字创作的流程。与Midjourney等闭源方案不同,Stable Diffusion给…...

Golang怎么实现依赖漏洞扫描_Golang如何用govulncheck检查依赖的已知安全漏洞【指南】

...

生产级RAG系统架构设计与优化实践

1. 生产环境中的RAG管道架构解析在构建实际可用的检索增强生成(RAG)系统时,管道化设计是确保系统可靠运行的关键。与实验环境不同,生产级RAG需要处理持续的数据流、高并发请求和严格的性能要求。通过将系统分解为三个核心管道——索引管道、检索管道和生…...

DDoS攻击原理与防御核心技术解析,网络安全必看

DDoS(分布式拒绝服务)攻击的核心定义是,攻击者通过控制一个由大量被感染设备(如个人电脑、服务器、物联网设备)组成的“僵尸网络”,协同向单一目标(如网站服务器、在线服务)发送海量…...

2026年AI编程工具Pick指南:Java场景谁更强?

一、热闹的赛道,冷静的目光2026年4月,AI编程工具赛道空前火热:Cursor洽谈20亿美元融资,估值超500亿美元Claude Code年化收入25亿美元贴身追赶GitHub Copilot日均生成1.5亿行企业代码但这些数字背后,有一个群体相对沉默…...

AOMEI Backupper

链接:https://pan.quark.cn/s/b578bfb8ab3aAOMEI Backupper是由傲梅官方推出的电脑上一键备份系统工具,有着业界最快的备份速度,能够瞬间将电脑上的系统备份下来,方便用户下次系统一键还原。专业解决用户的备份系统不会、磁盘备份…...

蔚蓝档案自动化脚本:5步实现游戏日常任务全自动,解放双手专注策略

蔚蓝档案自动化脚本:5步实现游戏日常任务全自动,解放双手专注策略 【免费下载链接】blue_archive_auto_script 支持按轴凹总力战, 无缝制造三解, 用于实现蔚蓝档案自动化的程序( Steam已适配 ) 项目地址: https://gitcode.com/gh_mirrors/bl/blue_arch…...

不平衡分类问题中的基准模型选择与评估指标指南

1. 不平衡分类中的基准模型选择指南在机器学习实践中,特别是处理不平衡分类问题时,新手常犯两个致命错误:一是直接应用复杂算法而不建立性能基准,二是错误地使用分类准确率作为评估指标。这两个错误往往导致模型看似表现良好&…...

GenAICon 2026见闻:70位行业大咖的5个共识

从智能体到世界模型,从算力基建到记忆架构,AGI的下一个拐点在哪里?01 4月21日,北京富力万丽酒店。 GenAICon 2026中国生成式AI大会正式开幕。70行业大咖齐聚一堂,围绕"奔赴AGI 重塑未来"的主题展开讨论。02 …...

LCEL深度解析

LangChain Expression Language (LCEL) 深度解析 从链式调用到流式输出,全面掌握 LangChain 的声明式编程范式,构建高性能 LLM 应用。 一、LCEL 是什么? LangChain Expression Language(LCEL)是 LangChain 推出的声明式语言,用于轻松组合各种组件构建 LLM 应用。它借鉴了…...

嵌入式——认识电子元器件——电容系列

认识常用电子元器件——电容介绍核心作用滤波稳压/退耦隔直通交延时/充放电名词解释容量/额定容量额定耐压 / 耐压值ESR 等效串联电阻ESL 等效串联电感纹波电流漏电流介质损耗 / 损耗角正切 (tanδ)介质极板 / 电极封装安规电容自愈特性旁路电容 / 退耦电容滤波电容耦合电容去耦…...

基于深度学习的《权游》龙族图像分类器实战

1. 项目概述:基于深度学习的《权游》龙族图像分类器去年重刷《权力的游戏》时,我注意到剧中三条龙(卓耿、雷戈、韦赛利昂)的视觉特征其实有规律可循。作为计算机视觉从业者,我决定用这个经典IP练手,构建一个…...

485AI语音识别模块:打字免编程,多设备串口直连控制

485AI语音识别模块,本质上是将智能语音识别(AI)与工业级通信(RS485)合二为一的控制核心。核心是将人声指令转为标准Modbus/485数据,直接控制工业设备、PLC、电机、灯光等,无需联网、低延迟、抗干扰强。一、核心通信特性标准RS485总线接口&…...

TTS-Backup终极指南:3步保护你的桌游模拟器珍贵数据 [特殊字符]

TTS-Backup终极指南:3步保护你的桌游模拟器珍贵数据 🎲 【免费下载链接】tts-backup Backup Tabletop Simulator saves and assets into comprehensive Zip files. 项目地址: https://gitcode.com/gh_mirrors/tt/tts-backup 在桌游模拟器&#xf…...

【源码深度】Android线上性能监控全体系|ANR/OOM/卡顿/崩溃 根治方案|Android全栈体系150讲-28

...

告别手动!用ABAP BAdI给采购订单行项目自动填充税码(附完整代码)

基于BAdI的采购订单税码自动化填充实战指南 在SAP采购流程中,税码处理一直是业务操作中的高频痛点。想象一下,当采购部门每天需要处理数百个订单、每个订单包含数十个行项目时,手工逐个输入税码不仅效率低下,还容易因人为疏忽导致…...

Stable Diffusion插画生成全流程指南

1. 项目概述:用Stable Diffusion生成插画的完整指南去年第一次接触Stable Diffusion时,我完全被这个AI绘图工具的潜力震撼了。作为一名插画师,我花了三个月时间系统测试了各种参数组合和工作流程,最终整理出这套适合创作者的高效方…...

【限时开源】车规级Docker守护进程加固包(已通过ASPICE L2认证):含17项车载专属健康检查、断电保护快照及CAN FD透传模块

第一章:车规级Docker守护进程加固包概述车规级Docker守护进程加固包(Automotive-Grade Docker Daemon Hardening Package,简称AG-DDHP)是一套面向ISO 21434与UNECE R156合规要求设计的轻量级安全增强组件,专为车载信息…...

Android S 上如何用 adb 和 XML 文件模拟任意运营商 SIM 卡(附完整配置文件示例)

Android S 运营商模拟测试实战指南:从原理到配置文件全解析 在移动设备测试领域,模拟不同运营商环境是验证网络功能兼容性的关键环节。想象一下这样的场景:你的团队正在开发一款全球化的金融应用,需要确保在美国Verizon、中国移动…...