算法
文章平均质量分 77
bug07250432
这个作者很懒,什么都没留下…
展开
-
如何判断两个链表相交及找到第一个相交点
我们学一个算法,一定是为了用吧,所谓“学以致用”吗?那么判断两个链表是否相交有什么用呢?这是因为一旦两个链表出现相交的情况,就可能发生这样的情况,程序释放了链表La的所有节点,这样就导致了另外一个与之有相交节点的链表Lb中的节点也释放了,而Lb的使用者,可能并不知道事实的真相,这会带来很大的麻烦。1.问题分析 看看两个链表相交到底是怎么回事吧,有这样的的几个事实:(假设链表中不存转载 2013-08-30 16:02:30 · 499 阅读 · 0 评论 -
BloomFilter–大规模数据处理利器
Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。一. 实例 为了说明Bloom Filter存在的重要意义,举一个实例: 假设要你写一个网络爬虫程序(web crawler)。由于网络间的链接错综复杂,爬虫在网络间爬行很可能会形成“环转载 2013-10-08 22:10:22 · 730 阅读 · 0 评论 -
bloom filter
目 录1什么是 Bloom filter2Bloom filter 计算方法3Bloom filter 特点4Bloom filter 的一个简单例子1什么是 Bloom filterBloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,转载 2013-10-08 22:09:22 · 599 阅读 · 0 评论 -
Bloom Filter算法及应用
1. 引言问题:有1000瓶药,但是其中有一瓶是有毒的,小白鼠吃了24小时后就会死掉,请问,在24小时找出有毒的药物,最少需要多少只小白鼠?答案是:10只,一只小白鼠可以表示2种状态,2^10可以表示1024种状态分析可参考:http://lzj0470.iteye.com/blog/657579通过二进制向量组来扩展描述的状态,Bloom Filter(BF)算法也是利用这个思想转载 2013-10-08 22:07:51 · 541 阅读 · 0 评论 -
五大常用算法之五:分支限界法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741378.html分支限界法一、基本描述 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件转载 2013-10-04 13:11:09 · 528 阅读 · 0 评论 -
五大常用算法之三:贪心算法
贪心算法http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741375.html一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必转载 2013-10-04 13:10:28 · 500 阅读 · 0 评论 -
五大常用算法之一:分治算法
分治算法http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很转载 2013-10-04 13:08:23 · 462 阅读 · 0 评论 -
五大常用算法之二:动态规划算法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741374.html一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求转载 2013-10-04 13:07:13 · 497 阅读 · 0 评论 -
KMP字符串模式匹配详解
http://www.cppblog.com/oosky/archive/2006/07/06/9486.html来自CSDN A_B_C_ABC 网友KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。一. 简单匹配算法先来看一个简单匹配算法的函数:转载 2013-09-11 11:48:40 · 370 阅读 · 0 评论 -
[珠玑之椟]随机数函数取样与概率
http://www.cnblogs.com/wuyuegb2312/archive/2013/06/29/3141292.html[珠玑之椟]随机数函数取样与概率 本节主要受到《编程珠玑》第12章随机取样问题的启发,但不仅仅限于随机取样问题,进一步地,研究讨论了一些在笔试面试中常见的和随机函数以及概率相关的问题。 阅读本文所需的知识: 1.对C语言中或其他语转载 2013-09-10 11:47:01 · 710 阅读 · 0 评论 -
卡特兰数
百科名片 卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。目录简介原理应用扩展C++应用展开简介原理应用扩展C++应用展开编辑本段简介卡特兰数又称卡塔兰数,转载 2013-09-09 15:31:06 · 630 阅读 · 0 评论 -
trie树--详解
前几天学习了并查集和trie树,这里总结一下trie。 本文讨论一棵最简单的trie树,基于英文26个字母组成的字符串,讨论插入字符串、判断前缀是否存在、查找字符串等基本操作;至于trie树的删除单个节点实在是少见,故在此不做详解。l Trie原理Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。l转载 2013-09-09 17:05:54 · 518 阅读 · 0 评论 -
求对称字符串的最大长度
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”, 因此输出4。分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。要判断一个字符串是不是对称的,不是一件很难的事情。我们可以先得到字符串首尾两个字符,判断是不是相等。如果不转载 2013-09-01 17:00:39 · 558 阅读 · 0 评论 -
树的三种递归、非递归遍历
递归和非递归俩种方法实现二叉树的前序遍历。咱们先来复习下,基础知识。因为关于树的遍历,在此100题中已出现过太多次了。二叉树结点存储的数据结构:typedef char datatype;typedef struct node { datatype data; struct node* lchild,*rchild; } bintnode;转载 2013-08-30 17:50:53 · 547 阅读 · 0 评论 -
超线程
超线程技术(Hyper-Threading Technology)是Intel在2002年发布的一项新技术。Intel率先在XERON处理器上得到应用。由于使用了该技术,Intel将是世界上首枚集成了双逻辑处理器单元的物理处理器(其实就是在一个处理器上整合了两个逻辑处理器单元)的提供者,据说此项技术能够提高30%的处理器性能。所谓超线程技术就是利用特殊的硬件指令,把多线程处理器内部的两个逻辑内转载 2013-10-10 16:46:49 · 1064 阅读 · 0 评论