算法
文章平均质量分 85
dearfulan
这个作者很懒,什么都没留下…
展开
-
字符串匹配--Sunday算法
前面一篇博客详细介绍了KMP算法,KMP算法的代码不算繁琐,但是理解起来相对比较困难。后来Daniel M.Sunday在1990年提出了Sunday算法,其思想是从前往后匹配,在匹配失败时关注的不是失配位而是主串中参加匹配的最末位字符的下一位字符。如果该字符没有在模式串中出现则在下一轮比较时直接跳过,即移动位置 = 模式串长度+ 1如果该字符在模式串中出现过,假设其出现在模式串中的最右位置为P[j], 那么移动位置 = m (模式串长度) - j 。举个例子说明下Sunday算法1)第一轮比原创 2021-01-01 19:47:58 · 358 阅读 · 0 评论 -
终于完全弄懂了KMP(个人理解篇)
前阵子在学习KMP相关的内容,其他部分都挺好理解的,最后在next数组和k=next[k]这个递推公式上迷糊了好久,看了不少人写的博客,有的写着写着就最后的结论又跳跃了,有的是写清楚了,但是感觉写的有点太长了。不过总算是弄懂了,所以决定自己也来写一个这个KMP算法...原创 2020-12-30 22:41:44 · 975 阅读 · 0 评论 -
分布式一致性算法Raft简介(下)
slide 15:这一节开始讲leader changes,即leader的变更过程中如何保证log的一致性:1)需要明白的是,新leader上任后,各个server的log状态很可能是不一致的;因为旧leader可能只完成了部分server的log复制就挂掉了;(新君即位,一片狼藉)2)需要特别注意的是,raft中新leader上任后,并不会立即对不一致的旧log进行cle...转载 2019-12-03 17:35:44 · 358 阅读 · 0 评论 -
分布式一致性算法Raft简介(上)
最近看了Ongaro在2014年的博士论文《CONSENSUS: BRIDGING THEORY AND PRACTICE》的部分章节,对raft有了初步的理解。其中论文中提到用于教学的user study,个人感觉非常不错,言简意赅,特此分享出来。本文基本与原讲解一致,又加上了笔者的一点理解。资源来源于Ongaro和Ousterhout在youtube上的分享(http://youtu.be...转载 2019-12-03 15:21:18 · 334 阅读 · 0 评论 -
HashMap+双向链表实现LRU
LRU即是Least Recently Used,即最近最少使用,选择最近最久未使用的数据将其淘汰。最简单的想法是使用先进先出(FIFO)的方式来实现,通过双向链表来实现因为链表插入和删除快,但是查询慢 ,而HashMap的查询速度快很多,所以除了构建一个双向链表,还构建了一个哈希map,用于快速查询对应key的节点,用空间换时间每次key被访问的时候,把被访问到的key移到头节点,...原创 2019-11-22 17:00:45 · 748 阅读 · 0 评论 -
滑动窗口算法学习(一)
目录思想案例连续元素最大之和题目分析解法求相同字母异序词的下标题目分析解法思想滑动窗口是指一个窗口,在一段区间上从左到右滑动,一直到区间的尾部,滑动窗口的长度是可以动态变化的(也可以固定)。一般情形下可以使用两个指针分别指向窗口的两边,指针 i 指向窗口的左边界,指针 j 指向窗口的右边界一些情况下,使用滑动窗口处理字符串和数组 能提高效率...原创 2019-11-01 18:42:07 · 698 阅读 · 0 评论