
数据结构与算法
文章平均质量分 78
lliuhao--
贵在坚持
展开
-
trim前缀树
是一种特殊的多叉树,它的 TrieNode 中 chidren 是一个大小为 26 的一维数组,分别对应了26个英文字符 ‘a’ ~ ‘z’,也就是说形成了一棵 26叉树。对于普通的多叉树,每个节点的所有子节点可能是没有任何规律的。简单来说,就是用字典的方式存储和遍历26叉树。前缀树的结构可以定义为下面这样。就是每个节点的 children 有规律的多叉树。(只保存小写字符的)原创 2023-06-06 15:44:29 · 184 阅读 · 0 评论 -
回溯算法及剪枝
回溯算法及剪枝理论基础模板框架实例思路剪枝回溯算法的本质是暴力穷举,即使用递归控制for循环嵌套的数量,本身不是一个高效的算法。尽管可以使用剪枝来提高效率,但是还是改不了穷举的本质。回溯法,一般用来解决组合,排列,切割,子集,棋盘等问题。理论基础回溯法也就是使用递归函数进行解决问题,精髓是使用递归控制for循环嵌套的数量。解决问题的过程可以抽象为树形结构,即一颗高度有限的树(N叉树)。从根节点一直走到叶子节点。叶子节点为满足条件的一个解决方案。因为回溯法解决的都是在集合中递归查找子集,所以集合的大原创 2022-02-13 11:59:47 · 4717 阅读 · 0 评论 -
KMP算法next数组求法,c语言版
KMP的next数组求法详解理论基础PMT值的生成next数组的生成在网上有很多kmp算法的讲解,大概的框架讲的都还不错,但在next数组的讲解上,我觉得不是很清晰。在学习KMP算法时,next数组的求解是它的精髓。在博客中看了许多next数组的求法,推荐一篇kmp算法.我觉得写的非常好。理论基础前缀:字符串A和B,A=B+S,S非空,则B为A的前缀后缀:字符串A和B,A=S+B,S非空,则B为A的后缀PMT值:前缀集合和后缀集合的交集中,最长元素的长度prefix:每一个下标位置对应一个P原创 2021-11-04 14:36:33 · 3322 阅读 · 1 评论