关于 Hash Map 与 Trie 时间复杂度的混淆

Confusion about Hash Map vs Trie time complexity

假设我们正在比较 hashmap 和 trie 中搜索函数的时间复杂度。

在我能找到的很多资源中,时间复杂度被描述为 哈希图得到:O(1) 对比 Trie 搜索:O(k),其中 k 是您要搜索的字符串中字符的长度。

但是,我觉得这有点令人困惑。在我看来,样本大小“n”在两种情况下的定义不同。

如果我们将 n 定义为字符数,从而对随着字符数增长到无穷大该算法的复杂性感兴趣,那么 hashmap get 的时间复杂度是否也为 O(k)由于它的哈希函数?

另一方面,如果我们将n定义为数据结构中的词数,那么Trie搜索的时间复杂度不也是O(1)吗,因为词的搜索不依赖于已经存储在 Trie 中的单词数?

最后,如果我们对时间复杂度进行比较,在我看来,Hashmap get 和 Trie 搜索的时间复杂度是一样的。

我在这里错过了什么?

是的,你完全正确。

您缺少的是关于算法复杂性的陈述可以基于您喜欢的任何输入项。在校外,这样的陈述是为了交流,你可以让它们交流任何你想要的。

不过,确保您被理解很重要,因此如果有可能混淆 O(n) 中的 n 是如何测量的,或者任何假设输入的约束(如有界字符串大小),那么你应该明确指定。