【发布时间】:2017-09-01 19:42:22
【问题描述】:
我很难理解什么是 O(1) 空间复杂度。我理解这意味着算法所需的空间不会随着输入或我们使用算法的数据的大小而增长。但这究竟是什么意思?
如果我们在链表上使用算法,比如 1->2->3->4,要遍历链表到达“3”,我们声明一个临时指针。并遍历列表直到我们到达 3。这是否意味着我们还有 O(1) 的额外空间?或者它是否意味着完全不同的东西。如果这根本没有意义,我很抱歉。我有点困惑。
【问题讨论】:
-
o(1) 空间复杂度意味着您使用的内存量是恒定的,不依赖于它正在处理的数据,更多信息here
-
@RodrigoGonzalez 这并非完全正确。首先你写了 little-o,它和 big-O 不一样。假设您的意思是 Big-O:假设您有一个函数接受单个整数输入
n,它使用 10 kB 用于偶数n和 20 kB 用于奇数n。此函数占用O(1)空间,但它肯定不会占用恒定数量的空间。请不要将这与 constant space 混淆,后者表示一个常数 上限,而不是一个常数 amount。
标签: complexity-theory space-complexity