这里出现的问题是:考虑到您正在查看哈希表的特定元素。删除它的代价是多少?
假设您有一个简单的链表:
v ----> w ----> x ----> y ----> z
|
you're here
现在,如果你删除x
,你需要连接w
到y
让你列表链接。您需要访问w
并告诉它指向y
(您想要拥有w ----> y
)。但是您不能w
从访问,x
因为它只是链接!因此,您必须遍历所有列表才能w
在O(n)操作中找到,然后告诉它链接到y
。那很糟。
然后,假设您是双向链接:
v <---> w <---> x <---> y <---> z
|
you're here
不错,您可以从这里访问w和y,因此可以w <---> y
在O(1)操作中连接两个()!