【问题标题】:How to implement deletion from a hash table with O(1) worst case time complexity?如何从具有 O(1) 最坏情况时间复杂度的哈希表中实现删除?
【发布时间】:2023-02-07 21:30:52
【问题描述】:

如果使用单独的链接实现冲突解决,如何实现从具有 O(1) 最坏情况时间复杂度的哈希表中删除键值对?

我不知道该怎么做才能保持不变

【问题讨论】:

  • 需要 O(1)预期的时间。如果你的链是一个列表,那是 O(n) 最坏的情况。
  • 你不能。在里面最差情况下会有O(n)时间复杂度:消息灵通的对手总是可以生成n具有相同的哈希码;然后了解哈希冲突解决算法,他总是可以要求item需要n - 1测试

标签: algorithm data-structures hashmap time-complexity maps


【解决方案1】:

你不能O(1)是一个平均的,预期的时间:假设散列函数是够好了, 所以我们没有太多散列冲突我们可以平均保证O(1)。在里面最差如果我们有不同的图片。一般情况下(没有施加限制时)a消息灵通的对手

  1. 生成n 项目都具有相同的哈希值.
  2. 现在,当删除 item 时,我们应该解决 n - 1 哈希冲突。在一般情况(没有二进制搜索等)我们必须执行n - 1比较。消息灵通的对手(知道我们的算法)总是可以要求删除最后可以解决的item

    所以,在一般情况下,我们有 O(n - 1) == O(n) 最坏情况的时间复杂度任何哈希表实现。

    在您的特定情况下(单独链接),最坏的情况是

    1. 所有项目共享相同的哈希码
    2. 要删除的项目在链(链表)的末尾。

【讨论】:

    猜你喜欢
    • 2022-07-07
    • 2020-01-19
    • 2021-12-19
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多