算法
文章平均质量分 55
hepeng597
这个作者很懒,什么都没留下…
展开
-
KMP算法详解及各种应用
KMP算法详解: KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字。其实KMP算法与BF算法的区别就在于KMP算法巧妙的消除了指针i的回溯问题,只需确定下次匹配j的位置即可,使得问题的复杂度由O(mn)下降到O(m+n)。 在KMP算法中,为了确定在匹配不成功时,下次匹配时j的位置,引入了next[]数组,next[j]的值表示P[0.转载 2013-08-12 20:11:20 · 659 阅读 · 0 评论 -
海量数据处理算法总结
1. Bloom Filter 【Bloom Filter】 Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。它是一个判断元素是否存在集合的快速的概率算法。Bloom Filter有可能会出现错误判断,但不会漏掉判断。也就是Bloom Filter判断元素不再集合,那肯定不在。如果判断元素存在集合中,转载 2013-07-30 22:55:59 · 1424 阅读 · 0 评论 -
求一个数组中满足一定条件的两个元素的最大差值
之前在面的时候碰到一道题,要求找出一个互异数组中两个元素的最大差值。具体描述如下: 有一个整数数组d[0,...,n-1],并且数组满足不存在相同的元素,要求找出 1) max{d[i] - d[j]} 且 i > j;(对应实际生活中的股票买卖,找出可能的最大收益) 2) max{d[i] - d[j]} 且 i 思路有很多种,用动态规划最简单,时间复杂度都是O(n),原创 2013-08-14 11:18:10 · 3193 阅读 · 1 评论 -
字符串公共串
一、找出最长公共子序列的长度 题:求字符串str1,str2的最长公共子序列的长度(可以不连续)。 解:定义二元函数函数f(m,n):分别以str1[m],str2[n]结尾的连续公共子序列的长度 而对于f(m,n) 有以下两种情况 1.str1[m] != str2[n],则有f(m,n) = max(f(m-1,n), f(m, n-1)) 2.str原创 2013-09-06 22:44:19 · 1362 阅读 · 0 评论