对于哈希映射和列表实现,计算字母出现次数O1的函数的额外空间复杂性吗?

问题描述

如果您使用哈希图(或python中的dict)并为找到的每个字母O(n)或O(1)添加新的键/递增键计数?我问是因为哈希图的最大大小是26个键

另一种解决方案是初始化长度为26的零的数组,并在出现字母的情况下增加与字母相对应的索引(例如,如果存在a,则增加arr [0])。据我了解,这样的解决方案将需要O(1)的额外空间。

我想最主要的问题是,如果一个输入只能有x个唯一字符输入,那么多余的空间是否视为O(1)?

解决方法

N中的O(N)是数组中元素的数量。由于无论传递100个元素还是传递100,000,000个元素,空间要求都是相同的,因此空间要求为O(1):这与输入大小无关。

技术上,python整数可以无限期地增长。这意味着自O(log(N))起,您的空间需求实际上类似于O(log_base_256(N)) = O(log(N) / log(256)) = O(log(N))。大多数其他语言都有真正的O(1)要求,因为它们限制了32位或64位整数的大小。出于所有实际目的,您可以将整数的大小限制为足以描述所有可用内存的值,然后将其命名为O(1)