
算法思想
文章平均质量分 77
dblinux
DBL && XLB
展开
-
我眼中的KMP
我眼中的KMP 1. KMP可以用来解决什么问题 KMP主要应用在字符串匹配上。KMP的主要思想是:当模式串与主串出现不匹配的字符时,可以知道一部分已经匹配的文本内容,可以利用这个避免重头开始匹配,大大的节省了时间。 2. KMP怎么用 KMP算法核心在于next数组的求解,但在求解前后缀、最长公共前后缀。下面分别对这三个概念加以阐述: 1. 前缀和后缀 假设你的字符串是 aabaaf 啥叫前缀呢?前缀就是带有第一个字符但不包括最后一个字符的所有顺序子串。那么前缀就是:a,aa,aab,aaba,aabaa原创 2021-06-23 23:11:30 · 121 阅读 · 0 评论 -
二叉树的非递归遍历实现
1. 二叉树的遍历 二叉树的递归遍历大家再熟悉不过了,简单的3~5行代码就可以搞定遍历问题,但是现在面试基本都是要求写出二叉树的非递归实现,这就稍微有点难度了。下面我将以一个小白的视角带你过一遍二叉树的非递归遍历实现原理以及相应的C++代码实现。话不多说,现在开始???? 2.遍历过程 我将用最简单的二叉树来说明算法思路,待遍历的二叉树【 1 – 2 – 3】。 前序遍历:根左右; 中序遍历:左根右; 后序遍历:左右根。 注意:对于左右子树的遍历,一定是先遍历左子树,再去遍历右子树。 3. 非递归框架原创 2021-06-04 17:15:06 · 681 阅读 · 0 评论 -
缓存淘汰算法的实现与应用介绍(LRU,LFU)
缓存淘汰算法的实现与应用介绍(LRU、LFU) 1. 梗概 **LRU:**时间;每次将访问的key放到链表的最前面,若需要删除一个key,则删除的是链表最末尾的节点。 **LFU:**频率;每访问一次key1,就给key1使用频率加一,频率越高,越排在链表的前面,越不容易被删除;若两个key访问频率一致,则最近访问的key排在前面。 缺点:LFU容易饿,若有一种情况:某一段时间某一个key被访问了很多次,但后面几乎不被访问,但还是占据着链表的前面位置 **LRU:**当存在热点数据时,LRU的效率很好,但原创 2021-05-19 23:59:25 · 272 阅读 · 0 评论