是否有可能在Java中使用单个for循环从一个数组中找到一个缺少的元素,而这个元素在其他数组中不存在
e.g. a1 = {2,5,1,9,3,4} , length n+1
a2 = {2,4,1,5,3} , length n
缺少元素 - 9 仅使用单个for循环而不是集合。可能吗??
答案 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)=缺少的元素