【问题标题】:Time and space efficient DataStructure for storing of a large data(order of 10^9) and accessing it quickly节省时间和空间的数据结构,用于存储大数据(10^9 的顺序)并快速访问它
【发布时间】:2019-01-12 05:53:01
【问题描述】:

在竞争性编码中,我们通常需要一个 DS 来表示 (1

如果我使用地图概念,那么 find() (用于访问我的数据的函数) 将需要登录时间。

1) 从我的应用程序的角度来看,数组不节省空间,地图也不节省时间。

有没有更好的 DS 来完成我的上述任务? 任何帮助表示赞赏。 谢谢 :)

【问题讨论】:

  • 如果您的算法由于整数映射中的搜索次数过多而太慢,则可能是错误的。您可以尝试std::unordered_map,但这可能对您的情况没有多大帮助。除此之外,您无法优化地图。
  • 原来std::unordered_map 整数的表现比我想象的要好。
  • 你必须解释为什么地图没有时间效率。

标签: data-structures c++14


【解决方案1】:

std::unordered_map 是你的好友。

std::map 不同,这提供了摊销的O(1) 查找和插入时间复杂度。 std::unordered_map 的底层数据结构是哈希表 - 在通常情况下具有单独链接的双向链表的存储桶。另一方面,std::map 是平衡二叉搜索树,底层提供对数查找。

对于竞争性节目,在今天的在线评委中,std::unordered_map 的 500 万个条目就可以了。除此之外的任何事情都可能导致问题。

【讨论】:

  • std::unordered_mapO(1) 查找平均,未摊销O(1)。有区别。
猜你喜欢
  • 1970-01-01
  • 2010-09-26
  • 2012-04-02
  • 2016-02-14
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 2018-11-16
  • 2022-06-10
相关资源
最近更新 更多