随笔分类 -  算法竞赛——数据结构

摘要:一、哈希表介绍 什么是哈希表? 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。 哈希表有什么 阅读全文
posted @ 2021-11-20 11:13 时间最考验人 阅读(409) 评论(0) 推荐(0) 编辑
摘要:堆 一、堆的基本介绍 1.堆的概念: 如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki ⇐ K2i+1 且 Ki<=K2i+2 ,则称为小堆(或大堆)。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫 阅读全文
posted @ 2021-11-17 21:31 时间最考验人 阅读(422) 评论(0) 推荐(0) 编辑
摘要:Trie(字典树) [字典树](Trie Tree) 是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串)。 它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 ——百度 · 百科 理解son[] []: 阅读全文
posted @ 2021-11-12 15:50 时间最考验人 阅读(754) 评论(0) 推荐(0) 编辑
摘要:DFS与BFS dfs又称深度优先搜索,即一路走到底(一个执着的人),当走到底(到达叶子节点)时要回溯。注:回溯不是直接回到头,而是边回去边看,能不能再往下走,只有当我们明确当前节点所有的路都走不通时才回退一步! BFS又称广度优先搜索,即一层一层的搜索,只有当每一层搜索完之后才搜索下一层(一个稳重 阅读全文
posted @ 2021-11-11 22:43 时间最考验人 阅读(792) 评论(0) 推荐(0) 编辑
摘要:一、BF算法 Brute-Force简称BF算法,也称单匹配算法。采用穷举的思路。BF是暴力的意思。 算法思路:从T的每一个字符开始依次与P的字符进行匹配。 BF算法匹配过程: 【代码实现】 分析: 要完成对于所有字符的匹配工作,可以遍历母串,并逐个与子串比较,若相同,则字串匹配位后移,若不成功,回 阅读全文
posted @ 2021-11-06 22:26 时间最考验人 阅读(435) 评论(0) 推荐(0) 编辑
摘要:单调栈与单调队列 单调栈就是栈内元素满足单调性的栈结构。此处的单调性分为单调递增与单调递减 如何维护一个单调栈: **单调递增栈:**在保持栈内元素单调递增的前提下(如果栈顶元素大于要入栈的元素,将将其弹出),将新元素入栈。 **单调递减栈:**在保持栈内元素单调递减的前提下(如果栈顶元素小于要入栈 阅读全文
posted @ 2021-11-06 11:09 时间最考验人 阅读(222) 评论(0) 推荐(0) 编辑
摘要:数组模拟栈与队列 数组模拟栈 栈特点:后进先出 模板 // tt表示栈顶 int stk[N], tt = 0; // 向栈顶插入一个数 stk[ ++ tt] = x; // 从栈顶弹出一个数 tt -- ; // 栈顶的值 stk[tt]; // 判断栈是否为空 if (tt > 0) { } 阅读全文
posted @ 2021-11-04 20:20 时间最考验人 阅读(57) 评论(0) 推荐(0) 编辑
摘要:数组模拟双链表 通过前面的学习我们知道单链表是单个指针指向操作,那么通过类比我们可以把指针设定为两个,并且让它们分别指向前后数据,这就是“双向链表”。使用这种链表,不仅可以从前往后, 还可以从后往前遍历数据,十分方便。 1.使用数组模拟双链表 // e[i] 表示节点i的值 // l[i] 指向当前 阅读全文
posted @ 2021-11-01 21:19 时间最考验人 阅读(239) 评论(2) 推荐(0) 编辑
摘要:链表 实现链表的方式 struct Node { int val; Node *next; };// 不讲——竞赛不常用 每次创建一个新的链表的时候,就会调用一次new函数来创建新的节点(动态创建链表),这个操作是非常慢的 单链表:算法题中单链表用的最多的是邻接表(n个链表)。应用:存储树和图 双链 阅读全文
posted @ 2021-10-31 20:45 时间最考验人 阅读(235) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示