我在接受采访时被问及哈希表,我不得不解释结构链。
我被问到如何在链表中搜索O(1)复杂度的元素。
我们真的可以找到O(1)吗?
由于
答案 0 :(得分:9)
如果您有足够好的哈希码,则在哈希表中搜索只有O(1)。如果 all 你的密钥具有相同的哈希码,那么它就是你所使用的任何寻址方案的O(n)。
答案 1 :(得分:5)
除非您在某些其他结构中保留对链接列表中节点的引用,否则无法访问O(1)中链接列表中的元素。这是因为链表保留了对列表头部的引用,并且必须遍历每个下一个元素以找到所请求的元素,该元素将出现在O(n)中。
答案 2 :(得分:0)
不,您无法在O(1)复杂度内搜索链接列表。
Hashtable创建具有相同哈希值的结构链接或链接列表。
如果散列是均匀分布的(良好散列),那么散列表将具有搜索元素的O(1)复杂度。哈希表有桶,每个桶都可以从哈希值访问,然后每个桶包含具有相同哈希值的元素的链表。