使用O(1)搜索链表

时间:2013-02-19 19:15:31

标签: java linked-list hashtable

我在接受采访时被问及哈希表,我不得不解释结构链。

我被问到如何在链表中搜索O(1)复杂度的元素。

我们真的可以找到O(1)吗?

由于

3 个答案:

答案 0 :(得分:9)

不,绝对没有。链接列表没有快速查找项目的巧妙方式 - 它是O(n)。

如果您有足够好的哈希码,则在哈希表中搜索只有O(1)。如果 all 你的密钥具有相同的哈希码,那么它就是你所使用的任何寻址方案的O(n)。

答案 1 :(得分:5)

除非您在某些其他结构中保留对链接列表中节点的引用,否则无法访问O(1)中链接列表中的元素。这是因为链表保留了对列表头部的引用,并且必须遍历每个下一个元素以找到所请求的元素,该元素将出现在O(n)中。

答案 2 :(得分:0)

不,您无法在O(1)复杂度内搜索链接列表。

Hashtable创建具有相同哈希值的结构链接或链接列表。

如果散列是均匀分布的(良好散列),那么散列表将具有搜索元素的O(1)复杂度。哈希表有桶,每个桶都可以从哈希值访问,然后每个桶包含具有相同哈希值的元素的链表。

http://www.algolist.net/Data_structures/Hash_table/Chaining

相关问题