【发布时间】:2012-10-09 18:30:16
【问题描述】:
我创建了一个搜索重复项然后将重复项索引存储到另一个数组中的方法。然后我正在遍历我的大数组并移动所有条目而不重复。
现在,我的问题是它使用 O(N*N) 并且我正在使用额外的内存空间,因为我正在添加额外的数组。
如何做到这一点? 假设我需要了解如何在不使用其他库或 HashSet 的情况下完成此操作。
感谢任何提示。
public void dups()
{
int[] index = new int[100];
int k = 0;
int n = 0;
int p = 0;
for (int i = 0; i < elements; i++)
for (int j = i + 1; j < elements; j++)
if(a[j].equals(a[i]))
index[k++] = i;
for (int m = 0; m < elements; m++)
if (m != index[p])
a[n++] = (T) a[m];
else
p++;
elements -= k;
}
【问题讨论】:
-
在 O(N) 中删除重复项是不可能的。
-
他没有说不要使用哈希表。
-
不要分裂头发,但 O(n) 可以使用 HashMap 完成。但我不确定“无 HashSet”要求是否包括 HashMap。
标签: java arrays duplicates time-complexity