我很难理解如何在该算法中复制数组。我很好的代码,直到我到下面显示的第12行。这段代码来自我正在学习的一本书。 我只是想了解的副本是如何在每场比赛进行帮助理解使用arraycopy删除重复元素的java算法
写了一些数值来模拟一个场景
a = [10,4,6,10,5,2]
a[0] = a[3] MATCH occurs when j=3
arraycopy(a, 4, a, 3, (5-3)) // Variable values substituted into arraycopy. (pretty sure they're correct)
System.arraycopy(a, j+1, a, 0, n-j); // Line 12
整个代码:
int n = a.length;
if (n < 2){
System.out.println("no duplicates");
}
for (int i = 0; i< n-1; i++)
for (int j = i + 1; j < n; j++)
if(a[i] == a[j]){
--n;
System.arraycopy(a, j+1, a, 0, n-j); // Line 12
--j;
System.out.println();
}
int[] aa = new int[n];
System.arraycopy(a, 0, aa, 0, n);
只是为了记录我理解第二个arraycopy语句,因为它只是简单地复制到数组aa中。
我知道在SO上有很多阵列问题,但是我遇到的问题没有回答这个问题,因为我需要逐步了解复制的匹配方式。
无论如何感谢提前家伙。
该算法应该做什么? – Kal
它应该从数组中删除重复的数字 –