【发布时间】:2013-06-26 22:05:13
【问题描述】:
所以,假设您有一个使用线性探测的哈希图。
您首先插入一个带有键 X 的值 X,它散列到位置 5,比如说。
然后,您使用键 Y 插入一个值 Y,该值也散列为 5。它将占用位置 6。
然后您插入一个带有键 Z 的值 Z,该值也散列为 5。它将占用位置 7。
然后你删除 Y,所以内存看起来像 "X, null, Z"
然后您尝试使用键 Z 插入一个值,它会检查 5,看到它已被占用,检查 6,然后将其插入为空。但是,已经有一个键为 Z 的条目,因此您将有两个键为 Z 的条目,这违反了不变量。
因此,在找到值本身之前,您是否不需要遍历整个地图。如果未找到,则可以将其插入第一个空空间。因此,不是所有对某个键的首次插入都是 O(N) 吗?
【问题讨论】:
-
我的问题错了,请参阅stackoverflow.com/questions/279539/… 了解使用探测时处理删除的各种技术。可以想象,使用链接实现的删除会更容易一些。
标签: hashmap