算法
文章平均质量分 94
wbin233
不甘平凡。
展开
-
康托展开和逆康托展开
简述 康托展开是一个全排列到一个自然数的双射,常用于构建hash表时的空间压缩。设有n个数(1,2,3,4,…,n),可以有组成不同(n!种)的排列组合,康托展开表示的就是是当前排列组合在n个不同元素的全排列中的名次。原理X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中, a[i]为整数,并且0 <= a[i] <= i,原创 2017-06-10 17:56:16 · 20759 阅读 · 15 评论 -
位运算求数组中只出现一次的数
今天偶然看到的有趣的问题,有好几个系列,感受位运算的小魅力。 当然下面的题可以用map来简单算出,所以下面的题要求时间复杂度为O(n),空间复杂度为O(1)。1. 简单版 一个数组中,只有一个数只出现一次,其他的数都是成双成对出现(2次,4次,6次…),求这出现一次的数。熟悉异或运算的朋友,看到就会说so easy了。 就是利用异或的性质,两个相同的数异或结果为0,不同为1,同时异或与顺序原创 2017-06-11 01:35:15 · 3107 阅读 · 1 评论 -
LIS算法: 最长上升子序列
LIS定义 LIS(Longest Increasing Subsequence)最长上升子序列 一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK <= N。 比如,对于序列(1, 7,原创 2017-08-25 11:49:16 · 22238 阅读 · 6 评论 -
一种快速求集合交集个数上限的方法
简介动机Cardinality FiltersSCF - Single Cardinality FilterSCF的几点性质RCF - Recursive Cardinality FilterRCF的几点性质参考资料简介介绍一个新的数据结构“Cardinality Filter”来快速计算一组交集的大小上限。且期望的时间复杂度为O(|A|+|B|w\frac{|A| + |B|}{w}原创 2017-12-05 14:28:16 · 3592 阅读 · 1 评论