访谈问题:如何使用数组设计一个具有O(1)的数据结构,用于获取,插入,删除?
我的想法是首先选择素数作为数组的大小,并使用“mod by array of size”作为简单的哈希函数。对于数组中的每个点,我们存储一个链接列表来处理冲突。
有没有更好的解决方案?
答案 0 :(得分:1)
您提到的方法是用于冲突解决的chaining技术,该技术在大多数实现中使用最为广泛。正如其他人评论的那样,几乎不可能实现具有保证O(1)获取,插入和删除的HashMap。
此外,要仅使用数组实现地图,您可以使用open-addressing方法来解决冲突。这是一种不同的冲突解决技术,其中没有使用指针,只是一个数组大于将存储在地图中的最大元素数。有几种方法可以实现基于开放寻址的冲突解决方案,但最简单的方法是线性探测技术。您可以阅读有关其实施的更多信息here。