【问题标题】:What is the time complexity of this bit of pseudocode这段伪代码的时间复杂度是多少
【发布时间】:2022-11-14 19:40:51
【问题描述】:
for loop {
    initialize new hashmap 
    for loop {
        if (hashmap.containsKey(i)
             map.put(something)
    }
}

基本上是 2 个嵌套的 for 循环,其中包含一个 containsKey 函数。

由于嵌套循环,我认为它的 O(n^2) 但由于 containsKey 函数,它也可能是 O(n^3)。有人可以帮我吗?

【问题讨论】:

标签: java time-complexity


【解决方案1】:

它实际上取决于您的代码中使用了哪个映射实现。假设对于 HashMap 实现,它是O(1),但是对于 TreeMap 实现它O(log(N)).有关详细信息,您可以查看以下内容:

Big-O summary for Java Collections Framework implementations?

https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#containsKey-java.lang.Object-

所以,如果你使用HashMap,那么时间复杂度是O(N^2),如果你使用 TreeMap,它将是O(N^2)(log(N))在你的情况下。

【讨论】:

    【解决方案2】:

    是的,你是对的,它实际上是 O(n^2)。 hashmap 的.put().containsKey() 通常只需要O(1),但在最坏的情况下可能是O(logN)。所以总体的主导因素是O(n^2)

    详细了解java hashmap operations 的时间复杂度

    希望能帮助到你!

    【讨论】:

      猜你喜欢
      • 2017-01-29
      • 1970-01-01
      • 2023-02-26
      • 2022-01-13
      • 2015-03-31
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多