![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 72
借点头发吧
这个作者很懒,什么都没留下…
展开
-
前缀、差分数组+应用【思维导图】
前缀、差分 差分 场景 频繁对原始数组的某个区间的元素进⾏增减 构造diff 差分数组 思路 对区间 nums[i…j] 的元素全部+x 只需要让 diff[i] += x,diff[j+1] -= x 根据反推 diff[i] += x :给 nums[i]后所有的元素加x diff[j+1] -= x :给nums[j+1]后所有元素减x 合并即为对区间[i…j] 中的所有元素都加x diff[i] = nums[i] - nums[i - 1]; 反推:res[i].原创 2022-03-13 15:28:26 · 415 阅读 · 0 评论 -
图的遍历 深度优先DFS 广度优先BFS
深度优先搜索 类似于树的前序遍历 从某顶点v出发,依次从v的邻接点出发深度优先遍历 从V0出发,选择邻接点V1,从V1接着出发,以此类推访问V3、V7、V4。V4访问结束后由于其邻接点都已访问,则回到V7,同理回到V3、V1、V0,从V0的另外一个邻接点出发访问V2、直到V5、V6. 为便于区别顶点是否已经访问,利用访问标志数组。 已经访问过的标志1 以邻接表 表示 #define False 0 #define True 1 void ALGraph::DFStraverse( )原创 2020-07-10 20:15:57 · 255 阅读 · 0 评论 -
图 || 图的存储结构 邻接矩阵 邻接表 十字链表 邻接多重表
图的相关术语 无向图 有向图 顶点、边、弧、弧头、弧尾 无向完全图 有向完全图 稠密图、稀疏图 度、入度、出度 边的权、网图 路径、路径长度 回路、简单路径、简单回路 子图 连通图、连通分量 强连通、强连通分量 生成树、生成森林 图的存储结构 邻接矩阵 用一维数组存储顶点信息,用二维数组表示邻接关系 一个无向图: 一个带权图: 邻接矩阵存储特点: 1)无向图的邻接矩阵是对称阵。 对于无向图,i行(i列)非零元素个数=第i个顶点的度TD 对于有向图,i行(i列)非零元素(非∞)个数=第i个顶点的出度原创 2020-07-09 17:29:29 · 455 阅读 · 0 评论 -
二叉树遍历递归、栈 || 线索二叉树 || 二叉查找树 || Trie树
二叉树 有下面两个特殊的类型 满二叉树,定义为除了叶子结点外,所有结点都有 2 个子结点。 完全二叉树,定义为除了最后一层以外,其他层的结点个数都达到最大,并且最后一层的叶子结点都靠左排列。 二叉树的遍历 前序遍历、中序遍历、后序遍历 二叉树遍历过程中,每个结点都被访问了一次,时间复杂度是 O(n)。接着,真正执行增加和删除操作的时间复杂度是 O(1)。 树数据的查找操作和链表一样,都需要遍历每一个数据去判断,所以时间复杂度是 O(n)。 二叉查找树 二叉查找树(二叉搜索树): 1)在二叉查找树中的任意原创 2020-07-06 22:34:00 · 399 阅读 · 0 评论 -
栈、队列 || stack、queue容器 || 有效的括号字符串、约瑟夫
栈 是特殊的线性表。只允许数据从栈顶进出,这也就是栈后进先出的性质。栈也有顺序表示和链式表示,分别称作顺序栈和链栈。它们对于数据的新增操作和删除操作的时间复杂度都是 O(1)。在查找操作中,栈和线性表一样只能通过全局遍历的方式进行,要 O(n) 的时间复杂度。 顺序栈 栈的顺序存储可以借助数组来实现。把数组的首元素存在栈底,最后一个元素放在栈顶。定义一个 top 指针来指示栈顶元素在数组中的位置。假设栈中只有一个数据元素,则 top = 0。一般以 top 是否为 -1 来判定是否为空栈。当定义了栈的最大容原创 2020-07-05 21:55:32 · 185 阅读 · 0 评论