【发布时间】:2013-04-26 15:25:31
【问题描述】:
这是为了采访。 他们问我什么是实现自定义哈希图的好方法。
我的回答是,如果你有一个 say , n 元素数组。
您可以将单个键映射到索引 %n 的整数。 这将使您可以将密钥存储在哈希图中。但 如果发生冲突,那么您可以在自定义数组中保留一个值列表。 现在,像这样在自定义 hashmap 中使用列表的最坏情况是 O(n)。 所以,我建议,我们可以在列表中使用堆(最小堆)并调用 heapify() 来平衡它。这也会给 logn 复杂性?
我想到的另一件事是,我可以使用具有 2-3-4 个节点的树,从而降低登录复杂性。 (有点像 B+ 树)
在自定义堆实现的情况下,有什么更好的办法来解决冲突?
【问题讨论】:
-
堆在最坏的情况下需要 O(n),因为您可能必须遍历整个堆,直到找到所需的元素。堆不提供通用的查找算法。树建议将约束键以某种方式排序,并且排序必须与散列函数和相等关系一致。