【发布时间】:2017-05-06 21:25:54
【问题描述】:
我相信插入哈希表是平均情况 O(1) 和最坏情况 O(n)。因此,如果我们遍历一个字符串并将每个单词添加到一个哈希表(将单词映射到它在字符串中出现的次数),那不是 O(n^2) 运行时的最坏情况吗?我之前试图问过这个问题,但答案说这是最坏的情况 O(n)。谢谢!
【问题讨论】:
-
将 字符串 插入哈希表需要
O(|s|)平均时间,其中|s|是字符串的长度。这就是计算哈希的成本,即使您缓存每个字符串的哈希并将其成本分摊到大量插入中,您仍然需要支付O(|s|)才能发现您刚刚查找的字符串是表(通过比较每个字符)。因此,如果字符串只有一个字符,则只有 O(1),在这种情况下,哈希表可能会过大。
标签: algorithm data-structures hash big-o hashtable