所以如果我有两个数组
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;
}
答案 0 :(得分:2)
你应该只有一个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 :(得分:0)
这是一个逻辑问题。
对于您的示例,您计算两次相同的差异,因为两个位置的切换实际上是一个开关。因此,请检查该条件并将其计为一个。