algorithm - 采访: Suggest a data structure which optimizes insertion,删除和随机值生成

标签 algorithm data-structures

建议一个可以优化以下所有 3 个操作的数据结构:

  1. 插入
  2. 删除
  3. 从一组现有值中返回一个随机值

假设您要输入整数/数字。

最佳答案

对于所有三个操作,动态数组 + Hashmap = O(1)

  • 插入

附加到数组 O(1) 的尾部,并将值索引对添加到 Hashmap O(1)。

  • 删除

通过Hashmap O(1)中的值找到索引,通过数组中的索引删除并将最后一个元素交换到槽O(1)中,并更新值-索引对(used-to-be ) 最后一个元素 O(1)。

  • 随机返回

为 O(1) 的数组生成一个随机索引。

关于algorithm - 采访: Suggest a data structure which optimizes insertion,删除和随机值生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14036365/

相关文章:

java - 在java中存储无序对的列表

java - 绘图方法流程

iPhone 开发 : What kind of data structures are available?

c++ - 使用 std::set 和多重比较条件的容器

algorithm - 查找数组中总和为指定值的所有整数对

algorithm - 在十亿的文件中找到一百个最大的数字

javascript - 如何正确计算数组中的出现次数?

data-structures - 我可以在 1GB 内存中创建多少个整数?

algorithm - 质数生成器程序SPOJ错误答案

algorithm - 在哪里可以找到自然语言处理的维特比算法转换值?