我被问到如何设计一个允许我在常量时间内实现nextElement()的哈希表。
我的回答是,为了避免检查那些空的桶,我们可以将添加到哈希的元素添加到双链表中。
如果要求我们迭代哈希表的元素,我们只需要从头到尾遍历列表。当从哈希中删除元素时,从列表中删除也是在恒定时间内完成的。
当然,这需要额外的空间用于列表和指向next / prev。
这种方法可以吗?更好的选择?
谢谢。
编辑:我更改了标题以使其更精确
答案 0 :(得分:0)
我不明白这个问题
迭代所有元素肯定是O(N)
操作,不能在恒定时间内完成
使用您的列表,您说您只是保存了一系列table[i]==null
操作,这些操作并没有真正为循环添加任何开销。