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

栈和队列总结

栈和队列理论

  1. C++中stack,queue 是容器么?
  2. 我们使用的stack,queue是属于那个版本的STL?
  3. 我们使用的STL中stack,queue是如何实现的?
  4. stack,queue 提供迭代器来遍历空间么?

stack和queue是STL中的容器适配器,不是类似list,vector那样的容器;

容器适配器本质上是基于底层真实容器(如 deque、list、vector)的一层封装,提供了特定的数据结构接口;

stack、queue默认基于deque实现;

不提供迭代器来遍历空间;

滑动窗口最大值问题

知识点:队列——单调队列;
主要思想:队列只需要维护有可能成为窗口里最大值的元素即可同时保证队列里的元素数值是由大到小的;
支持维护元素单调递减的队列就叫做单调队列,即单调递减或者单调递增的队列;c++不直接支持单调队列,需要我们自己来实现;

设计的时候,我们需要知道:
单调队列并不是一成不变的,而是不同场景不同写法;总之需要保证队列里单调递减或者递增的原则;

求前K个高频元素

知识点:优先级队列:priority_queue分为大根堆和小根堆两种,缺省默认大根堆;
格式priority_queue<元素,存放结构,比较原则>
小根堆:重载();
代码如下:

class mycomparison{public:bool operator()(const pair<int,int>&lhs,const pair<int,int>&rhs){return lhs.second > rhs.second;}};

一样有pop,push,front接口;

总结

在栈与队列系列中,我们强调栈与队列的基础,也是很多同学容易忽视的点。

使用抽象程度越高的语言,越容易忽视其底层实现,而C++相对来说是比较接近底层的语言。

我们用栈实现队列,用队列实现栈来掌握的栈与队列的基本操作。

接着,通过括号匹配问题、字符串去重问题、逆波兰表达式问题来系统讲解了栈在系统中的应用,以及使用技巧。

通过求滑动窗口最大值,以及前K个高频元素介绍了两种队列:单调队列和优先级队列,这是特殊场景解决问题的利器,是一定要掌握的。

http://www.zskr.cn/news/2705.html

相关文章:

  • Python-课后题题目-1.1编程世界初探
  • 引用类型
  • CF1237C2
  • linux环境docker离线镜像elasticsearch-7.17.3镜像资源
  • part 4
  • systemctl的service脚本写法
  • 9月份美联储的降息利好
  • 口胡记录
  • Day16内存分析及初始化
  • Vue3项目中集成AI对话功能的实战经验分享
  • CSP 赛前周记
  • Day16
  • 20250906
  • 在用灵魂去感受另一个灵魂的震颤
  • 百粉粉福
  • 202404_QQ_ZIP嵌套
  • 【初赛】图 - Slayer
  • POJ 2566 Bound Found
  • CF1140F Extending Set of Points
  • Lark免费企业邮箱推荐
  • 耶日奈曼:置信区间与假设检验的奠基者
  • vue3 使用 i18n-auto-extractor库 实现国际化
  • 20231314许城铭课上测试:Linux命令实践(AI)
  • reLeetCode 热题 100-3 最长连续序列 - MKT
  • pdf在纯html5移动端下不显示
  • 面试记录
  • GAS_Aura-Aura Input Component
  • bitset 相关记录
  • VMware Workstation 17.5.2 Build 23775571
  • 编程要求