
算法
文章平均质量分 70
sanfendi
这个作者很懒,什么都没留下…
展开
-
Bloom Filter的原理及实现
Bloom Filter:是一个比特数组,表示具有一定误报率的集合。主要优势在于其大小(比特位个数)为常数且在初始化时被设置,增加更多的元素到一个Bloom Filter 中不会增加它的大小,仅增加误报的概率。一般包含两个方法:add(),contains()。误报率: r = (1-exp(-kn/m))k ,k = ln(2) * (m/n) , r = 0.6185*(m/n原创 2014-04-15 10:51:10 · 3308 阅读 · 0 评论 -
找出1到19之中数的和为20的所有组合
可以分拆成多个函数来做,每个函数计算一种长度的组合。两位数字相加时,只能是1-9之间的数,加上10-19之间的数。以此类推。package test;public class Sum20 { public static void main(String[] args) { sum2num(); System.out.println("----------------");原创 2014-04-02 13:38:37 · 2746 阅读 · 0 评论 -
如何从一个数组中生成随机数组
有一个需要,给定一个数组,从中生成要求个数的随机数组,不重复,即getRandomArray(int[] originalArray,int number) 这样的一个函数。想了一下,可以这样做:把数组元素放到一个List中从List中随机取一个数把取到的数从List中删除重复上述过程代码如下:import java.util.ArrayList;import java.ut原创 2014-04-28 12:35:16 · 6020 阅读 · 0 评论 -
合并两个有序数组为一个新的有序数组
题目:有两个有序数组a,b,现需要将其合并成一个新的有序数组。简单的思路就是先放到一个新的数组中,再排序。但是这样的没体现任何算法,这里考的不是快速排序等排序算法。关键应该是如何利用有序已知这个条件。可以这样想,假设两个源数组的长度不一样,那么假设其中短的数组用完了,即全部放入到新数组中去了,那么长数组中剩下的那一段就可以直接拿来放入到新数组中去了。public class MergeTw原创 2014-07-07 19:57:44 · 18426 阅读 · 0 评论 -
对数组按照某一基准进行整理
题目:给定一个整数数组,把最右端的元素作为基准,对这个数组进行整理,其中大于这个基准的元素放到它的右边,小于这个基准的元素放到它的左边。不得使用临时数组。思路:先找一个大于基准的元素与基准进行交换位置,此时基准元素已经在数组的中部(不是最右/中间),从基准开始向后扫描,小于基准则交换。public class ArrayPivot { public static void main(St原创 2014-07-07 21:07:43 · 1851 阅读 · 0 评论