我創建了一個搜索重複的方法,然後將重複索引存儲到另一個數組中。然後我通過我的大陣列並移動所有條目而不重複。如何修改我的方法來搜索並刪除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