【发布时间】:2018-06-08 20:35:47
【问题描述】:
我正在查看问题 Link,它告诉解决方案的空间复杂度为 O(1)(阅读 Max 的答案)。我怀疑空间复杂度是算法所需的空间,我已经正确理解并认为它肯定是 O(n),其中 n 是链表的大小。谁能告诉我那个答案是错误的还是我理解有误?
【问题讨论】:
标签: algorithm linked-list space-complexity
我正在查看问题 Link,它告诉解决方案的空间复杂度为 O(1)(阅读 Max 的答案)。我怀疑空间复杂度是算法所需的空间,我已经正确理解并认为它肯定是 O(n),其中 n 是链表的大小。谁能告诉我那个答案是错误的还是我理解有误?
【问题讨论】:
标签: algorithm linked-list space-complexity
Max 的链接here 中的答案摘要显然是错误的。 根据定义,O(1) 空间复杂度是不可能的,如果目标是复制一些可变数量的数据(在本例中为链表)。
这在算法的描述中可以看到:
创建节点 1 的副本并将其插入到节点 1 和节点 2 之间 原始链表,创建 2 的副本并将其插入到 2 & 3..以这种方式继续,在第N个节点之后添加N的副本 块引用
这里,回答者刚刚添加了“N”个节点,所以它至少是 O(n) 复杂度(实际上,列出的算法的空间复杂度 是 O(n))。
【讨论】: