我正在使用第一个数组来存储所有数字的数据库,其中一些数字是重复的。
我已经通过这个数组来查看哪些项目是重复的,并将重复项目的索引添加到第二个数组。
现在,我必须遍历第一个数组并将除重复值之外的所有值添加到第三个数组(假设我们知道哪些字段是重复的)。
但是如何正确地做到这一点?我不能让它停止将第一个数组中的每个项目添加到第三个数组。
假设我不能使用 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] + " ");
}