当前位置: 首页 > 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.wxhsa.cn/company.asp?id=1440

相关文章:

  • 工业互联网认知实训台-一句话介绍
  • 湾区杯 SilentMiner WP
  • Python-课后题题目-1.1编程世界初探
  • Python-课后题题目-1.2初识python语言
  • node和npm相关的记录
  • 在Spring boot 中使用@master 设置主从数据库
  • 设计模式-装饰器模式 - MaC
  • 【API接口】最新可用河马短剧接口
  • 第 16 章反射(reflection)
  • 自我介绍+软工5问
  • 电容器+动生电动势+自由落体模型
  • 引用(reference)
  • 设计模式-组合模式 - MaC
  • 【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态
  • tmux 使用教程
  • 引用类型
  • CF1237C2
  • 力扣215. 数组中的第K个最大元素
  • 设计模式-桥接模式 - MaC
  • linux环境docker离线镜像elasticsearch-7.17.3镜像资源
  • Python 降序排序:轻松搞定列表、字典和自定义对象
  • 第02周 预习、实验与作业:Java基础语法2、面向对象入门
  • part 4
  • systemctl的service脚本写法
  • 9月份美联储的降息利好
  • 口胡记录
  • Day16内存分析及初始化
  • leveldb源码分析 #1 Slice WriteBatch WriteBatchInternal 【work记录】
  • 欧拉安装