描述是:
“给定一个从 1 到 N 的有序数字序列。可能其中一个数字被删除,然后剩余的数字混合在一起。找到被删除的数字。
例子:
The starting array sequence is [1,2,3,4,5,6,7,8,9]
The mixed array with one deleted number is [3,2,4,6,7,8,1,9]
Your function should return the int 5.
如果没有从数组中删除数字并且与它没有区别,则您的函数应该返回 int 0。
请注意,N 可以是 1 或更小(在后一种情况下,第一个数组将为 [])。”
我写了一个简单的答案:
import java.util.*;
public class Kata {
public static int findDeletedNumber (int[] arr, int[] mixedArr) {
Arrays.sort(mixedArr);
for(int i = 0; i < arr.length; i++){
try{
if(arr[i] != mixedArr[i]){
return arr[i];
}
}catch(ArrayIndexOutOfBoundsException e) {
return arr[i];
}
}
return 0;
}
}
我正在阅读其他人的答案,发现一个我觉得很难深入理解的答案:
import java.util.Arrays;
public class Kata {
public static int findDeletedNumber(int[] arr, int[] mixedArr) {
return Arrays.stream(arr).reduce((a, b) -> a ^ b).orElse(0) ^ Arrays.stream(mixedArr).reduce((a, b) -> a ^ b).orElse(0);
}
}
我想得到一些帮助,如果有人关心并有耐心写下解释和/或跟踪,将会有所帮助。目前我可以看到答案,但我不明白。🤯
慕哥9229398
相关分类