验证代码的空间复杂性以消除重复

时间:2014-04-03 06:50:48

标签: java complexity-theory space-complexity

@SuppressWarnings("unchecked")
public static <T> List<T> eliminateDuplicate(List<T> list) {
    Set<T> set = new HashSet<T>(list);
    return (List<T>) Arrays.asList(set.toArray());
}

想要检查上面简单代码的空间复杂性,以消除愚蠢。

  1. 在Set中存储 - &gt;为O(n)
  2. 由于set.toArray生成的数组存储 - O(n)
  3. 存储在新创建的列表中 - O(n)
  4. 总O(3n)与O(n)相同。

    你能帮我确认一下吗?

1 个答案:

答案 0 :(得分:0)

基本上,是的。总空间利用率为O(N),其中最终(重复数据删除)列表大小为N

但是Arrays.asList(...)正在创建一个占用O(1)空间的包装器(除了它正在包装的数组之外)。