【问题标题】:Data Structure for a particular problem?特定问题的数据结构?
【发布时间】:2010-05-23 04:58:14
【问题描述】:

哪种数据结构最坏情况下可以在O(1)时间内完成插入、删除和查找操作?

我们可以假设元素集合是从有限集合 1,2,...,n 中提取的整数,并且初始化可能需要 O(n) 时间。

我只能想到实现一个哈希表。

使用 Trees 实现它不会为任何操作提供 O(1) 时间复杂度。或者有可能吗??

请分享您对此或除这些之外的任何其他数据结构的看法。

谢谢..

【问题讨论】:

  • 您真的只想存储具有已知上限的整数吗?如果是这样,ROMANARMY 就成功了。如果你真的想存储其他东西,你应该告诉我们。

标签: algorithm data-structures


【解决方案1】:

虽然这听起来像是功课,但只要有足够的内存,您就可以使用数组。访问任何一个元素将是 O(1)。如果您使用每个单元格来记录遇到该类型的整数的数量,插入也将是 O(1)。搜索将是 O(1),因为它需要在该索引处索引数组并查看计数。这基本上就是基数排序的工作原理。

【讨论】:

  • 我喜欢它!这必须是我读过的世界上最简单的哈希表实现。当然,您牺牲了一点通用性,但看看实现简单性的收益! +1
  • 嗯,这不是功课,但是我正在尝试自己解决算法的一些问题,即个人兴趣,并尝试通过这个论坛寻求尽可能多的经验.. 这个论坛岩石!并且经验丰富的人可以解决问题..非常感谢..+1..
  • @AGeek:那么你可能也会喜欢这个链接kevinrodrigues.com/blog/2010/02/06/…
  • 它不是一个哈希表——它是一个位图(或者如果可以多次插入相同的值,一个计数位图,或者只是一个数组)。
【解决方案2】:

根据元素的范围,数组可能会做,但对于大量数据,您需要一个哈希表。它将为您提供 O(1) 次摊销操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多