如果Hashset'add'复杂度为O(1),那么如何存储唯一元素?

时间:2017-06-15 20:03:28

标签: data-structures big-o hashset

Big-O - 为了向HashSet添加元素,复杂度为O(1),那么HashSet如何确定要添加的元素是否唯一?

1 个答案:

答案 0 :(得分:0)

这取决于哈希表的选择,但在大多数传统的哈希表实现中(线性探测,链式哈希,二次探测等),插入的成本 on expectation O (1)而不是最坏情况 O(1)。这里的O(1)术语来自于平均在插入新值的过程中需要查看散列表中仅有恒定数量的元素的事实。在线性探测中,这是因为要检查的元素运行的预期长度是O(1),并且在链接散列中它是因为在存储桶中只有期望的O(1)元素。然后,哈希表可以在执行插入时检查新插入的元素是否等于这些值中的任何一个。如果是这样,我们知道它是重复的。如果没有,那么我们知道新元素不能复制;我们检查了可能与之相等的每个元素。这意味着平均插入的成本是O(1)我们可以在插入时检查唯一性。