我想要找到包含整数值的集合的交集?如果你有4-5个包含2k-4k整数的列表,那么最有效的方法是什么?
发布于 2014-02-12 08:33:58
如果您有内存可用:
这在理论上是O(所有集合之和基数+检索)。
其中retrieveal可以是整数的范围(如果使用原始数组),也可以是集合联合的基数(如果使用哈希表来枚举定义发生的值)。
如果您的集合的边界是已知的和小的,那么您可以使用一个足够大的整数数组来实现它,以容纳最大的集合数(通常是256组的8位字符)。
否则,您将需要某种哈希表,理论上仍然应该在o(n)中。
发布于 2014-02-12 09:58:53
例如,在许多语言中,c++集被实现为平衡的二叉树,因此您可以直接计算O(NlogM)中的集交集,只需查找O(logM)中的另一个集合,就可以将n作为较小的集大小使用。
优化:-
根据需要,可以对多个集合进行huffman coding中使用的优化:-
注:使用std::设置如果使用c++
https://stackoverflow.com/questions/21720900
复制相似问题