什么是O(1)空间复杂度?

cod*_*123 20 complexity-theory space-complexity

我很难理解什么是O(1)空间复杂性.据我所知,这意味着算法所需的空间不会随着输入或我们使用算法的数据大小而增长.但它究竟意味着什么?

如果我们在链表上使用算法说1-> 2-> 3-> 4,要遍历列表以达到"3",我们声明一个临时指针.并遍历列表直到我们达到3.这是否意味着我们仍然有O(1)额外的空间?或者它意味着完全不同的东西.如果这根本没有意义,我很抱歉.我有点困惑.

Aja*_*mar 29

要回答你的问题,如果你有一个指针并遍历列表,它将被计为O(1)空间复杂度.如果你有10或100甚至1000指针,则空间复杂度为O(1).但是,如果你想要'N'指针,即使'N'小到1,空间复杂度也是O(N).

希望您理解,O(1)表示常量(10,100和1000是常数)空间,并且不会根据输入大小(例如N)而变化.

  • 为了更好地理解 big-O 实际上是什么:如果你有 1000 个指针,你也可以说它是 O(1000)。这与 O(1) 相同,因为 big-O [不关心](/sf/ask/1553219601/分析)关于[常数因子](/sf/ask/1583020981/)。通常使用 O(1),因为它是最简单的形式。 (3认同)
  • 抱歉,该词与答案无关,因此将其删除:)当我们谈论空间复杂度时,我们只关心程序执行期间使用的存储。 (2认同)