Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用O(1)搜索链接列表_Java_Linked List_Hashtable - Fatal编程技术网

Java 使用O(1)搜索链接列表

Java 使用O(1)搜索链接列表,java,linked-list,hashtable,Java,Linked List,Hashtable,我在一次采访中被问及哈希表,我不得不解释结构链接 有人问我如何在复杂度为O(1)的链表中搜索元素 我们能用O(1)找到吗 谢谢不,绝对不是。链表没有快速查找项目的巧妙方法-它是O(n) 如果您有足够好的哈希代码,则在哈希表中搜索仅为O(1)。如果所有键都具有相同的哈希代码,则无论使用何种寻址方案,都是O(n)。除非您在其他结构的链接列表中保留对节点的引用,否则无法访问O(1)中链接列表中的元素。这是因为链表保留了对列表头部的引用,并且必须遍历下一个元素以找到所请求的元素,结果是O(n)。否,您不

我在一次采访中被问及哈希表,我不得不解释结构链接

有人问我如何在复杂度为O(1)的链表中搜索元素

我们能用O(1)找到吗


谢谢

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


如果您有足够好的哈希代码,则在哈希表中搜索仅为O(1)。如果所有键都具有相同的哈希代码,则无论使用何种寻址方案,都是O(n)。

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

否,您不能在O(1)复杂度内搜索链表

哈希表创建具有相同哈希值的元素的结构链接或链表

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


将所有元素放在一个哈希集中?asslias,你是对的,但是将元素添加到哈希集中是O(n):@ilanberci是的,但是你只需要做一次多次查找。面试官看到你是否知道这是可能的,或者如何做了吗?这就是我所想的O(n)这是正确的答案,我的头绕着O(1)@SotiriosDelimanolis:不是从这个答案我不知道-至少不知道,除非它被接受。@JonSkeet你在某一点后停止从投票中获得代表吗?@SotiriosDelimanolis:确实-看到了吗