繁体   English   中英

在线性时间内迭代数组时HashMap的空间复杂度

[英]Space Complexity of HashMap when iterating over an Array in linear time

我对程序的空间复杂性有疑问。 假设我正在迭代一个大小为n的数组(存储事件ID)(可能有数十亿)。 我想跟踪每个事件id的出现,所以我使用哈希映射将事件id存储为键,将其出现计数器存储为值。

这是伪代码:

Map m =  HashMap<>
for i to n-1
  if m.contains(i)
     int prevCount =  m.get(i)
     m.put(i, prevCount +1)
  else
   m.put(i, 1)

空间复杂性会是什么?

PS这是我在stackoverflow中的第一个问题,如果它看起来重复,请路由我到正确的答案。

您的循环最多将n-1个键/值对添加到HashMap

因此,空间复杂度为O(n) ,因为HashMap内部存储由一个数组组成,其大小将达到接近n的2的幂(假设您没有给HashMap一个比n大得多的初始容量) ,并且数组的每个元素都是一个链接列表,其元素的平均数为O(1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM