算法题
文章平均质量分 77
moonboat0331
这个作者很懒,什么都没留下…
展开
-
数据结构 之 图(图的遍历、拓扑排序、Dijkstra、Prim、Kruskal)
数据结构和算法中常用到的就是图,我记性不好总是忘东西,只好把一些琐碎的知识点记下来,方便以后查看。图(Graph)由表示数据元素的集合V和表示数据之间关系的集合E组成,记为G= ,V表示顶点,E表示边。图的分类有:有向图、带权图、稀疏图、稠密图、完全图、连通图完全图:任何两顶点间都有边相关联,具有最大边数,C(n,2).简单路径:序列中顶点不重复出现的路原创 2013-08-21 15:46:39 · 1753 阅读 · 0 评论 -
编程珠玑:第二章,3个问题
一、给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中一32位整数。1、如果有足够的内存,如何处理?2、如果内存不足,可以放在几个临时文件中,内存仅可以用几百字节来进行处理,如何处理? 答案:1、采用位数思想来存放,32位数需要2^32个位,2^23是1MB,则一共需要2^9,即512MB的内存。3、内存不足,可以采用如下思想原创 2013-06-26 17:19:46 · 596 阅读 · 0 评论 -
求整数随机数构成的数组中找到长度大于=3的最长的等差数列
求整数随机数构成的数组中找到长度大于=3的最长的等差数列输出等差数列由小到大: 如果没有符合条件的就输出[0,0]格式:输入[1,3,0,5,-1,6]输出[-1,1,3,5]要求时间复杂度,空间复杂度尽量小使用两个vector保存数据,先进行排序,需要O(nlogn)的时间,再进行查找。查找使用剪枝降低检索效率。最坏情况下需要O原创 2013-09-04 11:34:50 · 1031 阅读 · 1 评论 -
Catlan数笔记
reference:http://zh.wikipedia.org/wiki/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0 卡塔兰数是组合数学中一个常在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。卡塔兰数的一般项公式为 数列满足递推关系式:h(0) = 1, h(1)=1, h(n) = h(0)原创 2013-09-08 22:25:20 · 926 阅读 · 0 评论 -
求高精度幂
参见 http://www.zombie-tian.com/pages/262.htmlPOJ 1001 求高精度幂题目描述:对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。现在要你解决的问题是:对一个实数R( 0.0 n),其中n 是整数并且 0 解题思路:很简单的一道高精度题目。话不多说直接上代码,转载 2013-09-08 16:21:43 · 554 阅读 · 0 评论 -
有向连通图的割点
连通分量:无向图 G 的一个极大连通子图称为 G 的一个连通分量(或连通分支)。连通图只有一个连通分量,即其自身;非连通的无向图有多个连通分量。强连通图:有向图 G=(V,E) 中,若对于V中任意两个不同的顶点 x 和 y ,都存在从x 到 y 以及从 y 到 x 的路径,则称 G 是强连通图(Strongly Connected Graph)。相应地有强连通分量(Strongly Conne原创 2013-09-01 22:01:30 · 2106 阅读 · 0 评论 -
字符串连接
有n 个长为m+1 的字符串,如果某个字符串的最后m 个字符与某个字符串的前m 个字符匹配,则两个字符串可以联接,问这n 个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误 //-------------------------------------这道题可以使用图的方法来求解,能相连的点看成是中间有一条连线,最后简化为先构建一个图,然后从图中查找最长路径,如果出原创 2013-09-01 17:27:03 · 600 阅读 · 0 评论 -
剑指offer中典型编程题小记
1、 替换空格,实现一个函数,把字符串中每个空格替换成“%20”,例如 we are happy替换成we%20are%20happy 方法一:从头向尾检索,一旦发现空格便进行替换,并将之后的字符向后移位,复杂度O(n^2) 方法二:遍历一遍字符串,找到需要替换的总个数,计算最后字符串长度,然后从字符串尾开始向前替换,复杂度O(n)2、根据前序、中序遍历原创 2013-08-09 17:27:45 · 597 阅读 · 0 评论 -
编程之美3-结构之法-字符串及链表的探索
1、字符串移位包含问题:给定两个字符串s1和s2,要求判定s2是否被s1做循环移位得到解法一:对s1进行移位,再进行判定解法二:s1s1字符串包含了s1循环移位的所有可能性,只要检测s2是否为s1s1的子串即可,牺牲空间换时间。解法三:不需要额外空间?2、电话号码对应英文单词,例如2对应abc,3对应def,输入一串数字,找到对应的单词。解法一:构造排列树,将所有可能结原创 2013-08-14 09:12:11 · 639 阅读 · 0 评论 -
编程之美2 -数字中的技巧
1、求2进制中1的个数 解法一:利用位操作,原数与它减一的结果相与,得到的结果为将最后一个1置为0,由此类推。 解法二:查表法,0~256每个数的结果保存在表里,这种方法是一种用空间换时间的做法,适合于频繁调用算法的应用中。2、与阶乘有关问题一: 给定一个整数N,求N!中有多少个0方法一:0与5有关,因此只要判断N个数中有多少个5的指数即可。while(i%5) {r原创 2013-08-13 20:55:34 · 1017 阅读 · 0 评论 -
Bloom Filter、 并查集
Bloom Filter概念和原理焦萌 2007年1月27日 Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter转载 2013-08-16 15:50:39 · 476 阅读 · 0 评论 -
数据结构 之 外排序
如果数据存放在外存文件中,则需要考虑外存特点,采用外存文件排序技术,简称外排序(external sort)。需要根据内存的大小,将外存中的数据文件划分成若干段,每次把其中一段读入内存并用内排序方法进行排序。这些已排序的段或有序的子文件称为顺串或归并段(run)。置换选择排序原创 2013-08-21 17:38:58 · 832 阅读 · 0 评论 -
启发式搜索
Heuristic search:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径,提到了效率。在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。启发中的估价是用估价函数表示的,如:f(n) = g(n) + h(n)其中f(n) 是节点n的估价函数,g(n)是在状态空原创 2013-10-08 15:57:53 · 942 阅读 · 0 评论