news 2026/5/4 16:21:27

代码随想录的栈的学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录的栈的学习

栈与队列

1.栈与队列理论基础

栈和队列是STL(C++标准库)里面的两个数据结构

队列是先进先出,栈是先进后出

其中栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(就是说我们可以控制使用哪种容器来实现栈的功能)

队列中先进先出的数据结构,同样不允许有遍历行为,不提供迭代器,SGI STL(指的是标准模板库(STL)史上一个里程碑式的实现版本)中队列一样是以deque(指的是一个双向队列)为缺省情况下的底部结构

2.用栈实现队列

使用栈实现队列的下列操作:

push(x)--将一个元素放入队列的尾部

pop()--从队列首部移除元素

peek()--返回队列首部的元素

empty()--返回队列是否为空

这个题目是一道模拟题,不涉及到具体的算法,就是考察会栈和队列的掌握程度。这里用到了两个栈一个输出一个输入,这道题的力扣是编号232题,我在这里给出代码:

3.用队列实现栈

使用队列实现栈的下列操作:

push(x)--元素x入栈

pop()--移除栈顶元素

top()--获取栈顶元素

empty()--返回栈是否为空

然后这里用队列模拟栈,用一个队列就够了。一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外)重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。力扣题目编号225题,我在这里给出代码:

4.有效的括号

有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 注意空字符串可被认为是有效字符串。

这道题就是利用栈结构的特殊性,来做这个对称匹配类的题。这道题的力扣编号为20题,我在这里给出代码:

5.删除字符串中的所有相邻重复项

这个题目和上面这个题目有点相似,也是匹配问题,这个题目是匹配相邻元素,到最后都是做消除的操作,力扣题目编号1047题,我在这里给出代码:

6.逆波兰表达式求值

逆波兰表达式:是一种后缀表达式,所谓后缀就是指运算符写在后面

例如正常我们看到的是:(1 + 2)*(3 + 4),逆波兰表达式是:((1 2 +)(3 4 +)*)

这个表达式就方便在去掉括号没有歧义,还有就是方便入栈

这道题目的力扣编号是150题,我在这里给出代码:

7.滑动窗口最大值

这个题目就需要用到一个队列,放进去的元素,随着窗口移动,队列也一进一出,每次移动之后,队列告诉我们里面的最大值是什么

每次窗口移动的时候,调用que.pop(滑动窗口中移除元素的数值),que.push(滑动窗口添加元素的数值),然后que.front()就返回我们要的最大值。

这里利用deque做底层容器来实现单调队列

这个题目的力扣编号为239题,我在这里给出代码:


8.前K个高频元素

这个题目主要涉及三个内容:

1.要统计元素出现频率

2.对频率排序

3.找出前k个高频元素

用map来统计出现频率,用优先级队列(是一个看起来像队列的堆)对部分频率排序,利用小顶堆(从小到大排列)统计最大前k个元素,只有小顶堆每次将最小的元素弹出,最后小顶堆积累的才是前k个最大元素,这道题目的力扣编号为347题,我在这里给出代码:

ok,到这里代码随想录的栈的部分已经结束了,有问题欢迎指出。

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

【全网首发 / 终极万字加长版】2026年五一数学建模竞赛ABC题全量深度解析与国奖冲刺指南:从历年底层逻辑到满分代码的全链路解剖

作为上半年最具含金量、规模最大、竞争最激烈的全国性数模赛事之一,五一杯不仅是九月国赛(高教社杯)与美赛的最佳“黄金练兵场”,更是各大高校保研加分、综合测评、乃至未来求职简历镀金的核心利器。 面对今年ABC三道极具现实意义…

作者头像 李华
网站建设 2026/5/4 16:18:27

ARM Cortex-M系统控制与中断控制器详解

1. ARM系统控制与中断控制器深度解析在嵌入式系统开发中,对处理器核心功能的精确控制是确保系统稳定性和实时性的关键。作为ARM Cortex-M系列处理器的核心组成部分,系统控制寄存器(System Control Registers)和嵌套向量中断控制器(NVIC)构成了嵌入式系统…

作者头像 李华
网站建设 2026/5/4 16:14:27

如何在ComfyUI中实现高性能视频生成:FramePackWrapper完整实战指南

如何在ComfyUI中实现高性能视频生成:FramePackWrapper完整实战指南 【免费下载链接】ComfyUI-FramePackWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-FramePackWrapper ComfyUI-FramePackWrapper是专为ComfyUI设计的视频生成性能优化插件&…

作者头像 李华
网站建设 2026/5/4 16:13:01

为什么PHP的每一行代码都要经过CPU?

它的本质是:CPU 是计算机系统中唯一具备 逻辑运算 (Logic) 、 算术计算 (Arithmetic) 和 控制流调度 (Control Flow) 能力的通用处理单元。无论是高级语言的语法糖,还是底层的二进制指令,最终都必须转化为 CPU 能理解的 机器码 (Machine Code…

作者头像 李华
网站建设 2026/5/4 16:11:01

你的旧iPhone还能再战三年吗?让Legacy iOS Kit告诉你答案

你的旧iPhone还能再战三年吗?让Legacy iOS Kit告诉你答案 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …

作者头像 李华