![](/img/trans.png)
[英]comparing two double arrays, and then printing the number of differences + largest difference
[英]Trying to return the number of differences between two arrays
所以如果我有两个数组
int [] array1 = {1, 2, 3, 4}
int [] array2 = {1, 3, 2, 4}
这将返回两个,因为到目前为止数组中有两个差异,但是我无法弄清楚。
public static int countDifferences(int[] array1, int[] array2){
int differences = 0;
for(int i=0; i<array1.length; i++) {
for(int j=0; j<array2.length; j++) {
if(array1[i]==array2[j]) {
return 0;
}
else{
differences++;
}
}
}
return differences;
}
您应该只有一个for
循环在两个数组上迭代一次。 您还需要处理两个输入数组的长度不同的情况。 同样,一个或两个阵列可能为空。 对于这些极端情况,我将返回-1,不过您可以根据需要进行修改。
public static int countDifferences(int[] array1, int[] array2) {
if (array1 == null || array2 == null || array1.length != array2.length) {
return -1;
}
int differences = 0;
for (int i=0; i < array1.length; i++) {
if (array1[i] != array2[i]) {
differences++;
}
}
return differences;
}
这是一个逻辑问题。
在您的示例中,您两次计算相同的差值,因为两个位置的开关实际上是一个开关。 因此,请检查该条件并将其计为1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.