摘要:
Dijkstra算法求单源最短路 Dijkstra算法应用于求一个给定图的单个源点到其他各顶点的最短路。其中应用Dijkstra算法的图应满足如下条件 图中没有负权边 有向或者无向图都可以 图中若有自环或者重边也可以(需要自己先筛选一下) Dijkstra算法的核心就是从源点开始对各个顶点进行松弛操 阅读全文
摘要:
图的广度优先遍历 广度优先遍历,就是在遍历时优先考虑遍历的广度,不像深度优先那样一条路径遍历到底,而是一层一层的遍历。 由于广度优先是一层一层节点的遍历,在图的边权值都为1的情况下,若我们要求出节点a到节点b的最短路,就可以以a为源点(source)进行广搜,当a第一次搜到b时,其路径一定最短。因为 阅读全文
摘要:
图的深度优先遍历 深度优先,即对于一个图或者树来说,在遍历时优先考虑图或者树的单一路径的深度。示意图如下 即深度优先搜索的核心就是对一个路径一直向下搜索,当搜索到头时就回溯到前一状态再寻找别的路 深搜问题一般有两种情况,一种是搜索时元素只能用有限次,这需要我们定义一个全局标记数组来对已经使用的数字进 阅读全文
摘要:
哈希表 哈希表是一种通过映射来快速查找的数据结构。其通过键值对(key-value)来存储。一个数据通过哈希函数的运算来生成一个属于他自己的键值,尔后将其与键值绑定。当我们想查找这个数据时,就可以直接通过键来访问对应的值,时间复杂度近似为O(1)。 哈希表适用于这样一种场景,当数据范围很大但是数据量 阅读全文
摘要:
并查集 并查集是一种采用树形结构存储的集合,可以高效的查找两个元素是否在一个集合当中以及合并两个集合。这里的树形结构并非仅指二叉树,而是一个节点可以有多个孩子。 对于一个并查集的节点,它可以有两个元素,一个存储该节点的数据,另一个用来指向其父节点。当然当我们所存储的元素为1-n的连续整数时,数组下标 阅读全文
摘要:
堆的性质 堆可以认为是一种条件优先的队列,相较于普通的队列,堆每次出队时的元素为整个队列中满足某种极端条件的元素,如最大值(大顶堆),最小值(小顶堆)。 堆的存储结构为一棵完全二叉树,其满足这样一个性质。对于每个节点,其左右子树上的元素均小于(大于)该节点上的元素。这样就可以保证根节点上的元素为整棵 阅读全文
摘要:
Trie树(字典树) Trie树,是使用树形结构来存储字符串的一种方式,由于使用了树形结构,大大加快了字符串的存储以及多次查询的速度。 Trie树一般用于多字符串存储 , 以及查询一个字符串的出现次数时使用,或者查询以某段字符为前缀的字符串也可。 关于trie树的构造以及树形图像,请看这篇博客 Tr 阅读全文
摘要:
KMP算法实现 KMP串匹配主要分为两个步骤,即获得match数组(或者说next数组),然后应用match数组来进行串匹配的简化 获取match数组 KMP的精髓就在于使用match数组使得i指针不需回退,使得暴力的m*n的时间复杂度变为m+n的时间复杂度,其中的m指的就是求match数组的复杂度 阅读全文
摘要:
P1164 小A点菜 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 阅读全文