Я ответил на следующие ката: Потерянный номер в числовой последовательности . Описание:
"Дана упорядоченная последовательность чисел от 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);
}
}
Ссылка на ответ: https://www.codewars.com/kata/reviews/595be553429e11365c00006f/groups/59bef3a1eda42eb0bc001612
Я хотел бы получить некоторую помощь, если кто-то захочет и будет иметь терпение, чтобы написать объяснение и /или след, было бы полезно. В настоящее время я вижу ответ, но я не понимаю его. 10
Кроме того, я попытался понять это самостоятельно, прочитав: Что делает оператор ^ в Java? https://www.geeksforgeeks.org/bitwise-operators-in-java/