
算法
volcan1987
程序员
展开
-
KMP模式匹配算法(2)
上篇说到当子串为aaaab类似情况时,会有不必要的回溯因为此时next数组为01234,如果主串S[i] != T[4]时,j值依次回溯,可是前四个都是完全一样的字符,所以j值的回溯是没有必要的也就是说,在满足上一篇next数组的条件下,当子串有字符重复时,它所对应的next数组中的值只需要与它第一次出现时的在next数组中记录的值一样即可,比如,对于一个子串'a', 'b原创 2013-08-20 11:24:30 · 1041 阅读 · 0 评论 -
hash是如何处理冲突的?
上篇文章哈希查找因何快?我们使用它需要付出什么代价 只是简单介绍了使用hash所带来的利与弊。并未涉及hash的技术细节,本文则着重学习一下如何解决哈希编址的冲突问题。1)冲突是如何产生的?上文中谈到,哈希函数是指如何对关键字进行编址的规则,这里的关键字的范围很广,可视为无限集,如何保证无限集的原数据在编址的时候不会出现重复呢?规则本身无法实现这个目的。举一个例子,仍然用班级同学做比喻,现转载 2013-11-07 10:36:31 · 958 阅读 · 0 评论 -
RSA算法原理(一)
作者: 阮一峰日期: 2013年6月27日如果你问我,哪一种算法最重要?我可能会回答"公钥加密算法"。因为它是计算机通信安全的基石,保证了加密数据不会被破解。你可以想象一下,信用卡交易被破解的后果。进入正题之前,我先简单介绍一下,什么是"公钥加密算法"。一、一点历史1976年以前,所有的加密方法都是同一种模式:转载 2013-10-15 19:06:34 · 1134 阅读 · 0 评论 -
RSA算法原理(二)
原文:http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html作者: 阮一峰日期: 2013年7月 4日上一次,我介绍了一些数论知识。有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。六、密钥生成的步骤我们通过一个例子,来理解RSA算法。转载 2013-10-15 19:05:33 · 906 阅读 · 0 评论 -
字符串匹配的Boyer-Moore算法
作者: 阮一峰 发布时间: 2013-08-28 17:22 阅读: 2817 次 推荐: 20 原文链接 [收藏] 上一篇文章,我介绍了KMP算法。 但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。 Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977转载 2013-09-10 16:23:04 · 817 阅读 · 0 评论 -
IT公司笔试题算法部分
原文:http://www.cnblogs.com/mingzi/archive/2009/08/04/1538427.html0、数组原地逆置 很很很简单(不附加任何空间)int reverse(int *array){ for(int i=0;i { array[i]=array[i]+array[MAX-1转载 2013-08-20 17:51:04 · 1095 阅读 · 0 评论 -
每天一道算法题3 求子数组的最大和
原文:http://www.cnblogs.com/mingzi/archive/2009/08/04/1538444.html题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为转载 2013-08-20 17:47:28 · 973 阅读 · 0 评论 -
KMP模式匹配算法(1)
在写程序时,我们常常会用到从一个字符串找出子串的位置。比如,在某个句子快速找到某个你感兴趣的词:“csscsdn”中找到csdn以下是查找算法,注意:下标为1代表第一个位置,以此类推,跟数组不同一、朴素模式匹配朴素模式匹配是从第一个字符开始,依次向后匹配,这里我们假设游标起始点为1c s s c s d n|| || ?c s d n当i原创 2013-08-19 22:30:30 · 1358 阅读 · 0 评论 -
每天一道算法题19 寻找丑数
题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。分析:这是一道在网络上广为流传的面试题,据说google曾经采用过这道题。所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0。根据丑数的定义,丑数只能被2、3转载 2013-08-20 15:54:08 · 824 阅读 · 0 评论 -
哈希查找因何快?我们使用它需要付出什么代价
哈希表和哈希函数是大学数据结构中的课程,实际开发中我们经常用到Hashtable这种结构,当遇到键-值对存储,采用Hashtable比ArrayList查找的性能高。为什么呢?我们在享受高性能的同时,需要付出什么代价(这几天看红顶商人胡雪岩,经典台词:在你享受这之前,必须受别人吃不了的苦,忍受别人受不了的屈辱),那么使用Hashtable是否就是一桩无本万利的买卖呢?就此疑问,做以下分析,希望能抛转载 2013-11-07 10:39:31 · 1132 阅读 · 0 评论