最初の配列を使用して、一部の数字が重複している数字のすべてのデータベースを格納しています。
この配列を調べて、どのアイテムが複製されているかを確認し、複製されたアイテムのインデックスを2番目の配列に追加しています。
ここで、最初の配列をループして、重複する値を除くすべての値を 3 番目の配列に追加する必要があります (どのフィールドが重複しているかがわかっていると仮定します)。
しかし、これを正しく行うにはどうすればよいでしょうか。最初の配列から 3 番目の配列へのすべての項目の追加を停止することはできません。
HashSet() を使用できないと仮定します。
これの目的は、O(N) 時間の複雑さで重複を削除して、ある配列を別の配列に移動する方法を示すことです。
Input numbers: 00, 11, 11, 22, 33, 44, 55, 55, 66, 77, 88, 99
Output which index are duplicated: 1, 2, 6, 7
Output I get: 00, 11, 11, 22, 33, 44, 55, 55, 66, 77, 88, 99 (same as the input)
コード:
public void dups()
{
int[] b = new int[100];
int[] c = new int[100];
int k = 0;
int n = 0;
int p = 0;
for (int i = 0; i < nElems; i++)
for (int j = 0; j < nElems; j++)
if(a[j].equals(a[i]) && j != i)
b[k++] = i;
for (int l = 0; l < k; l++)
System.out.print(b[l] + " ");
for (int m = 0; m < nElems; m++)
if (m != b[p + 2])
c[m] = (Integer) a[n++];
System.out.print("\n");
for (int o = 0; o < nElems; o++)
System.out.print(c[o] + " ");
}