随笔分类 - 算法
摘要:判断一个数字是否为素数,正如大家都知道的那样,一个数 n 如果是合数,那么它的所有的因子不超过sqrt(n)--n的开方,那么我们可以用这个性质用最直观的方法。
阅读全文
摘要:题目:要求从N个元素中随机的抽取k个元素,其中N无法确定
解法:首先选择N中的前k个数加入“蓄水池”中,然后从第k+1个数开始,以k/k+i(i=1,2,3...)的概率选择这个数,然后在蓄水池中随机选择一个数,并将其替换,N个元素遍历完毕后,蓄水池中的k个数就是随机选择的。
阅读全文
摘要:题目:给出n个互不相同的字符, 并给定它们的相对大小顺序,这样n个字符的所有排列也会有一个顺序. 现在任给一个排列,求出在它后面的第i个排列.
这是一个典型的康拓展开应用,首先我们先阐述一下什么是康拓展开。
(1)康拓展开
所谓康拓展开是指把一个整数X展开成如下形式:
X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[2]*1!+a[1]*0!。(其中,a为整数,并且0=a[i]i(1=i=n))
(2)应用实例
阅读全文
摘要:两个字符串,A=”abcababbca“,B=”abab“,求问字符串B是否在字符串A中。这里依旧分两种情况讨论,一是字符串B在A中的位置必须是连续的。二是字符串B在A中的位置不是连续的,只要相对位置正确就可以。
阅读全文
摘要:关于最长公共子序列,相信大家都不是很陌生了,在这里我们分两种情况讨论,一是子序列是不连续的,二是子序列是连续的。
阅读全文
摘要:1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。
s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的大约为300M。
阅读全文