【问题标题】:Why is length property O(n) for linkedlist为什么链表的长度属性 O(n)
【发布时间】:2015-09-24 07:05:11
【问题描述】:

根据这个非常棒的book,“另一方面,大小总是需要 n 步,因为如果不从头到尾遍历,就无法知道链表中有多少节点。因此,长度为 O(n)。"。

我想知道为什么 UnorderedList 类中不能有一个属性,该属性可以在添加或删除节点时分别递增或递减。这是否特定于本书中“大小”的实现?

【问题讨论】:

  • 你可以把它作为一个额外的优化,但是你有一个链表这一事实是无关紧要的。 计算链表的长度是O(n)记住它是不同的操作。

标签: algorithm data-structures linked-list big-o time-complexity


【解决方案1】:

我想知道为什么你不能在 UnorderedList 类中拥有一个属性 添加或删除节点时可以增加或减少 分别。这是特定于“大小”的实现吗? 书?

显然,一些链表实现可以通过增加或减少数字属性来优化其项目的计数。

但在没有优化的情况下,除了迭代整个集合之外,没有其他方法可以计算 链表 项。

【讨论】:

    【解决方案2】:

    当然,您可以将长度保存在变量中,这样您就不必一次又一次地查询它。这本书使用了一个不需要这个加变量的实现,但是大小函数的复杂度是 O(N)。大小权衡的复杂性。

    【讨论】:

      猜你喜欢
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      • 2013-07-03
      相关资源
      最近更新 更多