数据结构
文章平均质量分 85
介绍常见的数据结构
Juan_2012
余尝寓居惠州嘉佑寺,纵步松风亭下。足力疲乏,思欲就亭止息。望亭宇尚在木末,意谓是如何得到?良久,忽曰:“此间有甚么歇不得处?”由是如挂钩之鱼,忽得解脱。若人悟此,虽兵阵相接,鼓声如雷霆,进则死敌,退则死法,当恁么时也不妨熟歇。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单调栈【数据结构】
摘要:单调栈是一种用于快速查找数组中元素左右侧第一个较大/较小值的特殊数据结构。其核心思想是维护一个单调递增或递减的栈,通过比较新元素与栈顶元素来决定弹出或保留元素。文章以数组{3,5,4,2,3}为例,演示了如何用单调栈找出每个元素右侧第一个较大值的下标,并提供了相应的代码实现。这种数据结构虽然实现简单,但常应用于较复杂的算法问题中,使用时需注意栈空判断以避免错误。原创 2025-08-19 19:00:00 · 552 阅读 · 0 评论 -
树状数组(补充版)【数据结构】
本文介绍了树状数组实现区间操作的两种方法。区间加单点查通过维护差分数组实现,在[l,r]区间加k时只需修改d[l]和d[r+1]。区间加区间查则通过维护两个树状数组c1和c2来优化计算,其中c1存储差分数组d[i],c2存储d[i]*i。相比线段树60行的代码量,这两种方法分别只需30行和40行左右,在简单区间操作场景下更简洁高效。但当需要处理更复杂操作时,仍建议使用线段树或分块等数据结构。原创 2025-08-10 15:23:43 · 433 阅读 · 0 评论 -
线段树详解【数据结构】
线段树是一种高效的区间操作数据结构,支持区间查询和修改操作,时间复杂度为O(logn)。其核心思想是将区间分解为二叉树结构,每个节点代表一个区间。通过懒标记技术实现高效的区间修改。虽然代码量较大,但通过合理优化(如动态开点)可以节省空间。线段树适用于各类区间问题,是算法竞赛中的重要工具。本文详细介绍了线段树的原理、实现方法(包括建树、懒标记下传、区间修改和查询等操作),并提供了完整代码示例和优化建议,帮助读者掌握这一数据结构。原创 2025-08-22 19:00:00 · 1082 阅读 · 0 评论 -
普通+可撤销+扩展域并查集详解【数据结构】
本文介绍了并查集数据结构及其变体的核心原理与应用。基础并查集通过家族合并的类比实现节点合并与查询操作,采用启发式合并优化性能。进一步引入路径压缩技术提升查询效率,但该技术不适用于可撤销并查集。文章还讲解了扩展域并查集处理敌对关系等复杂场景,并通过食物链问题示例说明其应用。最后提供了基础并查集、可撤销并查集和扩展域并查集的代码实现,指出非互反关系需使用强连通分量算法处理。全文以生动的家族关系类比解析各类并查集的特性与适用场景。原创 2025-08-12 14:55:41 · 995 阅读 · 0 评论 -
树状数组 【数据结构】
本文介绍了树状数组(Fenwick Tree)的基本原理和应用。树状数组是一种高效处理单点修改和区间查询的数据结构,相比线段树具有代码简单、空间复杂度低的优势。核心原理是利用lowbit运算构建树状结构,通过x±lowbit(x)操作实现快速查询和修改。典型应用包括区间求和和求解逆序对问题,其中逆序对问题可通过离散化处理大数情况。文章提供了单点修改区间查询和求解逆序对的具体代码实现,并指出树状数组在复杂操作时可能不如线段树适用。原创 2025-08-08 14:51:17 · 1118 阅读 · 0 评论
分享