首页 > 解决方案 > 在 O(1) 时间内为 python 中的空列表分配空间

问题描述

我有一种情况,我有一个确定的输入范围,因此,可以通过创建一个输入范围大小的列表并自行索引输入来完全在 O(1) 中进行索引。为了更清楚,我基本上有以下情况

a = "inputrange"
rng = ord(max(a)) - ord(min(s))
data = [None] * rng

我的问题是,我不确定分配过程是否data为 O(1)。直观地说,在 O(1) 中应该有一些方法可以做到这一点,因为在堆栈上我只是为数据定义一个起点和终点,因此应该只需要 O(1) 时间来分配,但是 python有点远离这个所以我不能确定。

我可以在 O(1) 中分配非常重要,因为我正在为输入数据创建一个后缀树,因此为了确保在遍历树时进行 O(1) 索引,我需要一个字母表大小的列表(或哈希图,虽然我避免使用这些),但由于我基本上为每个后缀分配,所以我需要分配保持不变。

我的另一个想法是创建一个“模板”列表并将其复制过来,但是复制需要 O(n) 时间,所以这行不通。

编辑:这不是“什么是时间复杂度[var]*n”的重复,我明确表示我正在寻找一种方法来列出 O(1) 中的内存分配。仅仅因为我碰巧将其[var]*n用作分配此内存的当前方法,并不意味着通过了解此方法的复杂性来回答它。

问题仍然存在:有没有办法在 O(1) 时间内为 python 中的空列表分配空间

标签: pythontime-complexity

解决方案


推荐阅读