算法:数据结构

1.单调栈

单调栈就是具有单调性的栈,这个栈里面的数据要么是递增要么是递减的

应用场景:

求与目标元素距离最近的比他大/小的值的位置

具体可分为:

1.目标左侧,距离最近,比他大(降序单调栈)

2.目标左侧,距离最近,比他小(升序单调栈)

3.目标右侧,距离最近,比他大

4.目标右侧,距离最近,比他小

第三第四条只需要从顺序遍历数组变为逆序遍历数组,然后分别使用1,2的策略即可

例题:

1.算法题(179):单调栈-CSDN博客

2.算法题(180):发射站-CSDN博客

3.算法题(181):最大直方矩形面积_最大矩形面积 算法-CSDN博客

2.单调队列

是一个具有单调性的双端队列

应用场景:解决滑动窗口内最值问题,优化动态规划

例题:

1.算法题(182):滑动窗口(单调队列)-CSDN博客

2.算法题(183):质量检测-CSDN博客

3.并查集

**树的双亲表示法:**就是使用数组记录当前索引表示的节点的父节点索引

**并查集:**是一个森林结构,每棵树表示一个集合,集合内每个节点表示一个元素,使用根节点表示整个集合

**应用场景:**维护一个集合,该集合要频繁进行集合内数据查询,集合合并

3.1并查集实现

(1)初始化:

让所有节点都自成集合,并查集数组都自己存储自己的索引

(2)查询:

使用递归方法一直向上寻找父节点,直到找到自己集合的根节点为止

(3)合并操作:

让其中一方的根节点更改指向为另一方的根节点

eg:x,y作为各自集合的根节点,我们可以让x的父节点变为y,反之亦可

(4)优化:

最差情况下,整个并查集会变成链式,这时候我们find的递归深度会很深,如果多次查询时间复杂度会很高

所以我们利用记忆化方法,在进行过一次find之后,将所有经过的节点的并查集存储都改为根节点

3.2普通并查集

模板题:算法题(184):并查集-CSDN博客

例题:

1.算法题(185):亲戚(并查集)-CSDN博客

2.算法题(186):lake countings(并查集)_lake counting s-CSDN博客

3.算法题(187):程序自动分析-CSDN博客

3.3扩展域并查集

当元素之间存在不止一种关系的时候,就需要使用扩展域并查集

**比如:**人们之间可以存在朋友关系,也可以存在敌人关系,如果并查集的集合只有一种关系就不合适了。此时我们需要有两类集合

**核心实现:**通过认为划分区域来达到区分集合类型的目的

比如一共有n个人,将1-n划分为朋友域,n+1~n+n为敌人域

例题:

1.算法题(188):团伙_团伙 并查集csdn-CSDN博客

2.算法题(189):食物链(扩展域并查集)-CSDN博客

3.4带权并查集

在并查集的基础上给每个节点多添加了一个权值,这个权值可以表示当前节点和父节点的关系,比如距离/关系(特定数字表示特定关系)

**核心:**在进行并查集操作的同时要对权值数组也做合适操作

4.字符串哈希

字符串哈希就是将一个字符串用整数表示

**核心思想:**通过ASCII码值以及哈希运算将字符串中的字符与数字转换为哈希值,从而用哈希值来标识这个字符串,不过为了避免出现大量哈希冲突,我们的进制p设为131或者13331

**计算哈希值的方式:**使用使用和进制计算一样的方法,逐层进行计算(最多从p^0~p^n)

例题:

1.算法题(192):字符串哈希_字符串的哈希算法-CSDN博客

5.字典树

字典树是一种用于快速存储和查询字符串的多叉树结构,核心是利用字符串的公共前缀将字符串以树形结构存储下来

应用场景:

1.查询某个单词是否出现过,出现次数是多少

2.查询有多少个单词是以某个字符串为前缀

3.查询所有以某个前缀开头的单词

模板题:

1.算法题(194):字典树_字典树算法题-CSDN博客

2.算法题(195):点名-CSDN博客

相关推荐
倒头就睡的小比特18 小时前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!18 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼19 小时前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
m0_5474866620 小时前
《数据结构教程》全套 PPT课件2026
数据结构
旖旎夜光20 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark20 小时前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her120 小时前
并查集-听课笔记
笔记·算法·并查集
码流子21 小时前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven21 小时前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark21 小时前
从算法设计模式看编程思维的抽象能力4
算法