【问题标题】:iterating loop - complexity迭代循环 - 复杂性
【发布时间】:2012-12-17 10:30:19
【问题描述】:

我编写了一个算法来查找链表中的重复项。
对于每个节点,我从列表的头部迭代到当前节点,如果它是重复的,则将其删除。

我的算法的复杂度是多少?

【问题讨论】:

  • 似乎对于您遍历列表以查找重复项并删除的每个项目。这意味着您有嵌套循环并且复杂度是 O(n^2)。如果您可以发布您的代码会更好...我从陈述中猜测你的逻辑。

标签: algorithm linked-list complexity-theory


【解决方案1】:

算法的复杂度是Θ(n^2)最坏的情况,因为如果没有重复,你为每个节点迭代线性增加的次数,导致总共1 + 2 + .... + n总读取这是Θ(n^2)(来自sum of arithmetic progression


最佳情况复杂度是Θ(n) - 如果所有元素都是骗子复杂度是Θ(n),因为在每次迭代中列表都会缩小,这导致每次迭代最多读取2个节点,因此Θ(n)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多