【问题标题】:Java: Time complexity getMethod()Java:时间复杂度 getMethod()
【发布时间】:2021-09-28 12:18:44
【问题描述】:

我有一个带有getAvailableRobot (ArrayList) 方法的类,我想知道该方法的时间复杂度是多少。我知道如果可用只是一个 int 它将是 O(1),但由于它是一个 ArrayList,它仍然是 O(1),还是会在迭代器的帮助下返回一个新列表O(n)?

public class Robot {
    
    protected List<Robot> available;
    
    
    public List<Robot> getAvailableRobots(){
        return available;
    }
}

我基本上要求的是另一种方法中这一行的运行时:

List<Robot> newList = getAvailableRobots();

【问题讨论】:

  • "返回可用";意味着您已经评估了列表并且没有计算该函数中的任何其他内容,因此复杂度仅为 O(1)。 “newList”的另一个迭代将是 O(n)。
  • 这个方法/简单的 getter 是迭代列表的每个元素还是只返回整个对象?我认为是后者,所以应该是O(1)。

标签: java arraylist time-complexity


【解决方案1】:

当您返回这样的集合时,它不会被复制,您只是返回对同一对象的引用。也就是说,该方法的执行时间不受列表大小的影响,因此 ot 也会有 O(1) 的时间复杂度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 2015-05-03
    • 2011-09-26
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    相关资源
    最近更新 更多