【发布时间】:2012-09-15 08:20:29
【问题描述】:
有一种数据结构,其行为就像一个不断增长的数组。当且仅当这些整数在此数据结构中没有重复时,未知数量的整数才会被一一插入。
最初我认为std::set 就足够了,它会随着新整数的进入而自动增长,并确保没有重复。
但是,随着集合变大,插入速度会下降。那么除了哈希之外还有其他的想法吗?
附言
我想知道诸如异或所有元素或构建稀疏表(就像 rmq 一样)之类的任何技巧都适用吗?
【问题讨论】:
-
整数值是否有上限?
-
@Jon,2∧32的上限
-
你能给出这些操作的复杂性吗?如果我们没有它们,许多数据结构都是可能的。例如,二叉树或链表。
-
@Ben 如果可能的话,所需的插入复杂度将是 o(1)。
-
你知道整数个数的数量级吗?可能是 10 个、1000 个还是 1000000 个?