试图返回两个数组之间的差异数

时间:2016-10-25 00:03:46

标签: java 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;
}

2 个答案:

答案 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)

这是一个逻辑问题。

对于您的示例,您计算两次相同的差异,因为两个位置的切换实际上是一个开关。因此,请检查该条件并将其计为一个。