确定此代码的时间复杂度

时间:2016-11-12 08:12:49

标签: data-structures time-complexity big-o

我试图解决this问题,下面是我的代码。

import java.util.*;

// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");

class Solution {
    public int solution(int[] A) {
    Set <Integer> set = new HashSet<Integer>();
    for(int i=0;i<A.length;i++){
            set.add(A[i]);
        }
        return set.size();
        // write your code in Java SE 8
    }
}

我的问题是这段代码的时间复杂度是多少。我以为它是O(n)。 n是元素的数量,但我的测试结果表明它已经检测到O(n * log n)的时间复杂度。你能用简短的解释告诉我正确的答案吗?

1 个答案:

答案 0 :(得分:0)

在Java中插入11:00:00 10:00:00 预期摊销成本为O(1)。这意味着如果你在HashMap中进行一系列n次插入,那么平均,如果你有一个好的散列函数,运行时将是O(n)。 &#34;平均而言#34;部分是指对象如何分布存在一些固有的随机性这一事实,这意味着它可能需要更长的时间。最好的&#34;表征运行时的方法是&#34;期望O(n),&#34;但有一个理解,如果你真的,真的不幸,它可能比这更长。