【问题标题】:Confused with space complexity of following algorithm对以下算法的空间复杂度感到困惑
【发布时间】:2018-06-08 20:35:47
【问题描述】:

我正在查看问题 Link,它告诉解决方案的空间复杂度为 O(1)(阅读 Max 的答案)。我怀疑空间复杂度是算法所需的空间,我已经正确理解并认为它肯定是 O(n),其中 n 是链表的大小。谁能告诉我那个答案是错误的还是我理解有误?

【问题讨论】:

    标签: algorithm linked-list space-complexity


    【解决方案1】:

    Max 的链接here 中的答案摘要显然是错误的。 根据定义,O(1) 空间复杂度是不可能的,如果目标是复制一些可变数量的数据(在本例中为链表)。

    这在算法的描述中可以看到:

    创建节点 1 的副本并将其插入到节点 1 和节点 2 之间 原始链表,创建 2 的副本并将其插入到 2 & 3..以这种方式继续,在第N个节点之后添加N的副本 块引用

    这里,回答者刚刚添加了“N”个节点,所以它至少是 O(n) 复杂度(实际上,列出的算法的空间复杂度 O(n))。

    【讨论】:

    • 你能给我列出算法空间复杂度的链接吗?为什么这么多人不假思索地支持他的答案?
    • 您好 Parth Patel,原始问题中提供了链接(尽管是间接的,因为您必须查看 Max 的答案)。这个主题基本上是在问“Max's answer是否正确;以及为什么”,这意味着像我这样的答案在上下文 Max's answer 中,其中已经包含链接。尽管如此,我现在也在这里提供了它。
    • 好的,谢谢。您提供的链接是正确的,并且清楚地写明辅助空间是 O(1),这是正确的,但空间复杂度与辅助空间不同。
    • 是的。除了最后对空间复杂度的总结之外,关于它的一切都是正确的。可能只是作者笔误。 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 2011-12-14
    • 2011-07-17
    相关资源
    最近更新 更多