我创建了一个搜索重复的方法,然后将重复索引存储到另一个数组中。然后我通过我的大阵列并移动所有条目而不重复。如何修改我的方法来搜索并删除O(N)或O(N * log N)中的重复项?
现在,我的问题是,这使用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)中的重复项。 –
http://stackoverflow.com/questions/4395668/remove-duplicates-from-array-without-using-hash-table –
他没有说哈希表不会被使用。 – FSP