在单个for循环中查找一个数组中缺少的元素与其他数组的比较

时间:2014-08-10 07:52:55

标签: java arrays algorithm search

是否有可能在Java中使用单个for循环从一个数组中找到一个缺少的元素,而这个元素在其他数组中不存在

e.g. a1 = {2,5,1,9,3,4} , length n+1

     a2 = {2,4,1,5,3}   , length n

缺少元素 - 9 仅使用单个for循环而不是集合。可能吗??

3 个答案:

答案 0 :(得分:9)

在最基本的情况下,如果我们总是在谈论数字,那就简单地总结吸盘了。

int sumOne = 0;
int sumTwo = 0;

for(int i = 0; i < a1.length; i++){
    sumOne += a1[i];
    if(i < a2.length)
        sumTwo += a2[i];
}

int missingNumber = sumOne - sumTwo;

如果元素不总是数字......请求更多循环。

答案 1 :(得分:3)

使用XOR

查找缺少的元素
class Main {
    public static void main(String[] args) {
        int[] a1 = { 2, 5, 1, 9, 3, 4 };
        int[] a2 = { 2, 4, 1, 5, 3 };

        int missingElement = a1[a1.length - 1];
        for (int i = 0; i < a2.length; i++) {
            missingElement = missingElement ^ a1[i] ^ a2[i];
        }

        System.out.println(missingElement);
    }
}

答案 2 :(得分:2)

在一个循环中求和2个数组然后减去(max - min)=缺少的元素