
数据结构
文章平均质量分 82
默归
这个作者很懒,什么都没留下…
展开
-
基本数据结构:图
图是由结点与边构成的集合(V,E),V是所有点的集合,E是所有边的集和。图中的边是具有方向性的,只能按箭头方向从一点到另一点。我们把以这个结点为起点的有向边的数目称作该结点的出度,把以这个结点为终点的有向边的数目称作该结点的入度。图中的边无方向性,可以由任意方向从一点到另一点。我们把与该结点相连的边的数目称作该结点的度。图中的边带有权值,可以理解为从一个结点到与它相连结点的距离。............原创 2022-07-10 11:47:08 · 341 阅读 · 2 评论 -
哈希表在算法中的应用
用几个例题介绍了哈希表在算法中的常见用途。原创 2022-06-08 23:07:31 · 748 阅读 · 0 评论 -
已知二叉树的前序、中序遍历,求二叉树的后序遍历
已知二叉树的前序、中序遍历,求二叉树的后序遍历,递归方式解决。原创 2022-06-05 22:29:04 · 12138 阅读 · 3 评论 -
字典树trie
介绍了字典树的数组实现原创 2021-12-30 15:10:03 · 459 阅读 · 0 评论 -
数据结构:哈夫曼树
哈夫曼树与哈夫曼编码的java实现原创 2021-12-30 14:15:19 · 2909 阅读 · 0 评论 -
基本数据结构:二叉堆(堆排序)
我们在解决问题时经常会遇到需要不断维护一段数据内最值的情况,用更精确的话来说就是:存在集合S,里面的元素可能会随时增加、删除、修改,而我们需要做到随时返回集合内的最值,如果采用遍历的方式维护最值,则每次维护都将遍历所有数据,其效率往往十分低下。为解决这个问题,我们就引入了一个新的数据结构——二叉堆。.........原创 2020-03-07 18:16:03 · 651 阅读 · 0 评论 -
基本数据结构:并查集(路径压缩与按秩合并)
本文重点介绍了并查集的实现与它的两种优化方式:路径压缩与按秩合并。原创 2020-01-30 22:59:18 · 1565 阅读 · 2 评论 -
基本数据结构:队列、单调队列与优先队列
本文重点介绍思想,更多面向算法竞赛,并未过多关注具体的代码实现上。原创 2020-01-26 17:12:29 · 3831 阅读 · 1 评论 -
基本数据结构:链表、块状链表与跳跃链表
本文重点介绍思想,更多面向算法竞赛,并未过多关注具体的代码实现上。原创 2021-04-21 00:47:29 · 530 阅读 · 0 评论 -
根号算法:分块
导入 众所周知,我们熟悉的算法时间复杂度有常数级,对数级、线性级、次方级、指数级等等,其中为应对题目规模对时间复杂度的要求,我们一般要将算法的时间复杂度优化到对数级,但是实际上我们还有一种优化方法——根号算法,它的时间复杂度为级,同样可以应对大部分的题目规模,并且具有相当大的可拓展性。和对数算法基本对应分治类似,根号算法也对应着一种操作,就是本篇博客要介绍的分块。 什么是分块? ...原创 2019-11-09 02:23:43 · 1104 阅读 · 0 评论 -
基本数据结构:栈与单调栈
本文重点介绍思想,更多面向算法竞赛,并未过多关注具体的代码实现上。原创 2019-10-20 19:06:17 · 818 阅读 · 0 评论 -
高级数据结构:线段树(Lazy标记的两种处理方法)
目录 线段树的使用 1.线段树的建立 2.区间询问 3.单点修改 4.区间修改 例题及其补充原创 2019-11-03 19:35:41 · 724 阅读 · 0 评论 -
高级数据结构:树状数组(区间修改、逆序对问题)
我们经常会遇到求一段区间的连续和问题,直接暴力求解(从左端点一直累加到右端点)时间复杂度为o(n),貌似也不低...但是对于有m次询问的题,时间复杂度为O(mn)就显得有点捉襟见肘了,此时一个好的想法就是使用前缀和数组。所谓前缀和数组,顾名思义就是维护段序列的前缀和的数组,其实现也相当简单:定义前缀和数组sum[N],全部初始化为0,输入第i个数据x时,只要将sum[i]=sum[i-1]+x,就能递推得到整个前缀和数组,但要注意i要从1开始。得到了前缀和数组,我们再来看求一段区间的连续和问题,如果左端点.原创 2019-09-25 22:13:30 · 1380 阅读 · 0 评论