news 2026/4/20 20:49:40

代码随想录第十天 栈和队列

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录第十天 栈和队列

第一题 很经典的栈模拟队列 https://leetcode.cn/problems/implement-queue-using-stacks/submissions/693619507/

这道题倒是没啥算法性质,主要还是模拟(话说模拟也不简单啊,挺考验思维能力的),一个栈的话只能先进后出所以怎么都无法实现先进先出的效果,所以肯定是两个栈,一个模拟入队,一个模拟出队,具体实现时是一个栈作为压入栈,在压入数据时只往这个栈中压入,记为In_stack;另一个栈只作为弹出栈,在弹出数据时只从这个栈弹出,记为out_stack。因为数据压入栈的时候,顺序是先进后出的。那么只要把In_stack的数据再压入out_stack中,顺序就变回来了,这听上去简单但是有两个要注意:

  1. 一次性全部压入:从in_stackout_stack转移时,必须一次性转移所有元素。

  2. 非空不压入:只要out_stack不为空,就绝对不能进行转移。

违反1的情况举例:1~5依次压入in_stackin_stack的栈顶到栈底为5~1,从in_stack压入out_stack时,只将5和4压入了out_stackout_stack还剩下1、2、3没有压入。此时如果用户想进行弹出操作,那么4将最先弹出,与预想的队列顺序就不一致。

违反2的情况举例:1~5依次压入in_stackin_stack将所有的数据压入out_stack,此时从out_stack的栈顶到栈底就变成了1~5。此时又有6~10依次压入in_stackout_stack不为空,in_stack不能向其中压入数据。如果违反2压入了out_stack,从out_stack的栈顶到栈底就变成了6~10、1~5。那么此时如果用户想进行弹出操作,6将最先弹出,与预想的队列顺序就不一致.

class MyQueue: def __init__(self): self.in_stack = [] self.out_stack = [] def push(self, x: int) -> None: self.in_stack.append(x) def pop(self) -> int: self._help() return self.out_stack.pop() def peek(self) -> int: self._help() return self.out_stack[-1] def empty(self) -> bool: return not self.in_stack and not self.out_stack def _help(self): if not self.out_stack: with self.in_stack: self.out_stack.append(self.in_stack.pop())

def _help(self):
# 规则2:只有out_stack为空时才转移
if not self.out_stack:
# 规则1:一次性转移in_stack中的所有元素
while self.in_stack: # 这个while循环保证了"一次性全部"
self.out_stack.append(self.in_stack.pop())

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 1:01:43

亲测Glyph视觉推理模型,长文本变图像处理太惊艳了

亲测Glyph视觉推理模型,长文本变图像处理太惊艳了 最近在测试一批多模态新模型时,偶然接触到智谱开源的Glyph视觉推理模型。说实话,第一眼看到它的技术思路时我有点怀疑——把长文本渲染成图像再交给视觉语言模型处理?这听起来像…

作者头像 李华
网站建设 2026/4/17 4:47:58

Keil uVision5中C/C++编译器设置通俗解释

以下是对您提供的博文内容进行 深度润色与重构后的专业级技术文章 ,严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、有经验感、带教学温度; ✅ 打破模块化标题结构,以逻辑流替代“引言/核心/总结”式框架&…

作者头像 李华
网站建设 2026/4/19 12:10:44

Speech Seaco Paraformer内存监控:系统资源占用实时观察方法

Speech Seaco Paraformer内存监控:系统资源占用实时观察方法 1. 为什么需要关注Paraformer的内存使用? Speech Seaco Paraformer 是基于阿里 FunASR 框架构建的高性能中文语音识别模型,由科哥完成 WebUI 二次开发并开源。它在实际部署中表现…

作者头像 李华
网站建设 2026/4/18 13:40:51

不用再装环境!YOLOE预构建镜像太省事了

不用再装环境!YOLOE预构建镜像太省事了 你有没有经历过这样的深夜: 想试试最新的开放词汇目标检测模型,刚克隆完仓库,conda create就报错; pip install torch后发现CUDA版本不匹配,又去查NVIDIA驱动&#…

作者头像 李华
网站建设 2026/4/20 15:24:22

如何优雅地去掉照片中的人?lama镜像来帮你解决

如何优雅地去掉照片中的人?lama镜像来帮你解决 在日常处理照片时,你是否遇到过这样的困扰:一张风景照里突然闯入路人,一张精心构图的建筑摄影被随意停放的车辆破坏,或者一张家庭合影里有朋友临时离开只留下空位&#x…

作者头像 李华
网站建设 2026/4/18 9:13:59

Qwen-Image-Edit-2511使用心得:图像漂移问题明显减轻

Qwen-Image-Edit-2511使用心得:图像漂移问题明显减轻 最近在实际项目中密集测试了Qwen-Image-Edit系列的最新镜像——Qwen-Image-Edit-2511。和上一版2509相比,它不是小修小补,而是针对几个长期困扰图像编辑工作流的痛点做了扎实优化。最直观…

作者头像 李华