![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 90
aMonstere
这个作者很懒,什么都没留下…
展开
-
AC自动机——解决多模匹配问题
AC自动机什么是多模匹配问题?有多个模式串的匹配问题,就是多模匹配问题处理方法多个模式串,建立成一棵字典树和文本串的每一位对齐匹配,模拟暴力匹配算法的过程常规多模匹配从文本串中的每一次在字典树中看是否有可以匹配的当匹配成功文本串中的she时,也就意味着后续一定会匹配成功he she对应了字典树中的节点P,he对应了字典树中的节点QP和Q就是等价匹配节点,如果从P引出一条边指向Q,就可以加速匹配过程 在P下面查找节点的操作,等价于在Q下面查找节点的操作这条等价关系边,通常在A原创 2021-02-23 03:02:32 · 974 阅读 · 0 评论 -
字符串匹配之字典树与双数组字典树
字典树:姓名:Trie曾用名:字典树 ;单词查找树作用:单词查找 ;字符串排序根节点:整本字典根节点的子节点:按照前后顺序,分别存储a.b.c.d…当该字母在本树中,没有引申出来的单词,也可能不存在该字母子节点分红白两色红色:可以与根节点独立成词白色:不可与根节点独立成词也就是红色节点的数量就是单词的数量字典树如何做字符串排序?答:将字符串插入到字典树中,然后进行深度优先遍历,得到的字符串就是排好序的时间复杂度为O(n)正式字典树插入写法#include <std原创 2021-02-22 03:08:10 · 387 阅读 · 0 评论 -
字符串匹配算法——暴力 + KMP +SUNDAY + 哈希 + SHIFT_AND
单模匹配暴力匹配只有一个模式串机型匹配模式串:待查找的字符串依次性对齐,模式串的第一位和母串的每一位开始匹配,直到发现母串中的一部分跟模式串匹配单模匹配问题,顾名思义,只有一个模式串依次对齐模式串和文本串的每一位,直到匹配成功关键:不重不漏的找到答案int brute_force(const char *s, const char *t) { for (int i = 0; s[i]; i++) { int flag = 1; for (int j原创 2021-01-30 02:17:11 · 304 阅读 · 0 评论 -
树状数组
树状数组一、前缀和数组原数组:a1,a2,a3,......,ana_1, a_2, a_3, ......,a_na1,a2,a3,......,an前缀和:s[i]=∑k=1k=iak,ai=Si−Si−1s[i] = \sum_{k =1 }^{k = i}a_k, a_i = S_i - S_{i - 1}s[i]=∑k=1k=iak,ai=Si−Si−1差分数组:X=ai−ai−1X = a_i - a_{i - 1}X=ai−ai−1X数组是a数组的差分数组,a原创 2021-01-28 21:51:44 · 120 阅读 · 0 评论 -
单调队列与单调栈
热身一、数据结构操作分析:插入操作:可以用一个栈模拟,一直往栈顶放元素删除操作:就是正常的弹栈操作左移操作:弹栈操作,可弹出的元素需要保留,可以放到第二个栈里面右移操作:讲第二个栈顶元素,移动到第一个栈里面询问操作:维护一个数组F,每次元素更新,都需要维护数组F问题分析:关键就是新造一个数据结构,结构定义 + 结构操作模拟光标的功能,做移动,右移动,插入,删除,用对顶栈来模拟实现对顶栈,用数组模拟,或者用链表模拟题目中的BUG:Query K中 K 可能大于当前位置#incl原创 2021-01-26 03:23:30 · 209 阅读 · 0 评论 -
线段树
线段树线段树:解决区间的修改以及查询,用来维护一维序列的一种高级数据结构支持的操作:奇性函数的区间修改与查询修改:Modify(值,位置) 查询:Query(区间的起始点,区间的终止点)线段树中的关键词:完全二叉树:线段树程序实现时候的实际存储结构区 间: 线段树中每个节点所维护的范围向 上 更 新:用两个子节点的信息更新本节点的信息下 沉 标 记:将本节点的懒惰标记更新给两个子节点口 诀:下沉发生在递归之前,向上发生在递归之后一、问题原创 2021-01-20 04:13:21 · 168 阅读 · 0 评论 -
霍夫曼树与霍夫曼编码
霍夫曼树以及哈夫曼编码一、什么是哈夫曼树与哈夫曼编码编码是什么答:在ASCII 编码中‘a’ = 97 = (01100001)2(01100001)_2(01100001)2‘0’ = 48 = (00110000)2(00110000)_2(00110000)2注意:任何信息,在计算机中,都是二进制存储的ASCII编码规则下的信息:“aa00” = 0110 0001、01100001、00110000、00110000信息的价值在于流通,从一台计算机 传输到 另外一台计算机原创 2021-01-18 22:29:20 · 930 阅读 · 0 评论 -
手撕红黑树
从0到1手撕红黑树红黑树:一种自平衡的二叉查找树一、性质 (平衡条件) (很重要)节点非黑即红根节点是黑色叶子节点(NIL)是黑色红色节点连接的两个子节点均为黑色 -> (红色节点与红色节点不可以相连)从根节点到所有叶子节点的路径上,黑色节点的数量相同小推论:性质4+性质5 => 最长边节点数量:最短边节点数量 = 2 :1某种程度上来说,红黑树也是靠控制树高来控制平衡的节点定义typedef struct Node { int key; int co原创 2021-01-15 02:16:17 · 566 阅读 · 0 评论