【问题标题】:Why transversing the list for LinkedList and Arraylist takes same time?为什么遍历 LinkedList 和 Arraylist 的列表需要相同的时间?
【发布时间】:2018-02-01 04:56:35
【问题描述】:

为什么这段代码的 Arraylist 和 LinkedList 的大 O 会是相同的 O(MN)?

PS:我不完全理解这段代码。任何解释将不胜感激。

public static int Count( List<Integer> lst1, List<Integer> lst2) {
    Iterator<Integer> itr1 = lst1.iterator();

    int count=0;
    while ( itr1.hasNext() ) {
        Integer x = itr1.next();
        Iterator<Integer> itr2 = lst2.iterator();
        while (itr2.hasNext())
            if (x.equals(itr2.next()))
                count++;
    }
    return count;
}

【问题讨论】:

  • 你如何确定它需要“相同的时间”?至于代码,与标题中的问题无关,“请解释这段代码”形式的问题是题外话。
  • @JimGarrison 很抱歉造成混乱。有一个问题根据此代码询问确定它在 ArrayList 中运行和在 LinkedList 中运行的大 O。然后在我的同学解释之后,我意识到两者的答案都是 O(MN) 不知道为什么。我希望现在更清楚了。如果还有更多问题,请告诉我。谢谢

标签: java arraylist linked-list


【解决方案1】:

遍历这两个列表需要相同的时间复杂度。

但与 ArrayList 相比,LinkedList 的删除速度更快。 因为 ArrayList 是基于索引工作的,而 LinkedList 是基于地址跟踪的。

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2017-10-14
    • 2015-04-10
    相关资源
    最近更新 更多