TLE 在使用 hashmap 但不是在使用 map[256]= [关闭]

Posted

技术标签:

【中文标题】TLE 在使用 hashmap 但不是在使用 map[256]= [关闭]【英文标题】:TLE whileusing hashmap but not while using map[256]= [closed]TLE 在使用 hashmap 但不是在使用 map[256]= [关闭] 【发布时间】:2021-05-27 10:20:21 【问题描述】:

我正在做this code,当我尝试使用像unordered_map<char,int> m 这样的哈希图解决这个问题时,我得到TLE(超出时间限制),但是每当我使用像map[256]=0 这样的哈希表时,我代码运行良好。为什么会这样? unordered_map 的工作方式与数组的工作方式不一样吗?访问时间复杂度为 O(1)?

【问题讨论】:

【参考方案1】:

unordered_map 是渐近 O(1) 但在实时它通常比数组慢得多。 这有几个原因。哈希函数需要一些时间来计算数组不需要的,并且您需要处理哈希冲突,相比之下这可能非常昂贵。数组是连续的内存,可以大大减少缓存未命中。

主要内容是渐近 O 表示法是性能的近似值,但仅适用于大输入,不关心常数。所以一个 O(1) 可以比另一个 O(1) 快 100 倍。

另一个要点是,如果您没有充分的理由不这样做,那么您应该始终更喜欢数组或向量而不是其他数据结构。 如果您的键空间对于数组来说太大,例如 unordered_map<long long, int>,那么哈希映射会很好。

【讨论】:

以上是关于TLE 在使用 hashmap 但不是在使用 map[256]= [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 SpringBoot 中将 yaml 映射到对象 hashmap

java - 如何将Java hashMap内容的全部放在另一个上,但不替换现有的键和值?

纯手写实现HashMap

深入理解HashMap

重新认识HashMap(in JDK1.8)

Psycopg2 SQL 语句在查询生成器中工作,但不是在 Python 中