我试图解决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)的时间复杂度。你能用简短的解释告诉我正确的答案吗?
答案 0 :(得分:0)
在Java中插入11:00:00
10:00:00
的预期,摊销成本为O(1)。这意味着如果你在HashMap
中进行一系列n次插入,那么平均,如果你有一个好的散列函数,运行时将是O(n)。 &#34;平均而言#34;部分是指对象如何分布存在一些固有的随机性这一事实,这意味着它可能需要更长的时间。最好的&#34;表征运行时的方法是&#34;期望O(n),&#34;但有一个理解,如果你真的,真的不幸,它可能比这更长。