나는 양의 정수를 가진 배열을 가지고 있습니다. 이 배열에있는 하나의 요소를 제외한 모든 요소에는 복제본이 없습니다. 고유 한 요소를 찾는 방법은 요소 중 하나가 1 인 경우에만 1을 반환하는 XOR 비트 연산자를 사용하는 것입니다.누락 된 고유 ID를 찾기위한 비트 XOR 연산자
public class Bitter {
public static void main(String[] args) {
int[] deliveryIds = {34, 40, 2, 21, 50, 40, 34, 2, 50};
System.out.println(new Bitter().findUniqueDeliveryId(deliveryIds));
}
public int findUniqueDeliveryId(int[] deliveryIds) {
int uniqueDeliveryId = 0;
for(int i = 0; i < deliveryIds.length; i++) {
uniqueDeliveryId ^= deliveryIds[i];
}
return uniqueDeliveryId;
}
}
루프에서
배열의 정수 각각 다음, 0 (34)과 XOR 연산되어 0에서 시작 UNIQUEID와 XOR 연산되고 그 결과는 다음 XOR이다
다음
는 코드 배열 40의 다음 정수로 처리하면 전체 배열을 통과합니다.심지어는 중단 점을 설정하고 전체 플로우를 한 번에 한 줄씩 처리 한 후에도 uniqueId (값 0부터 시작 함)를 사용한 XORing이 배열에서 중복되지 않는 정수를 찾는 데 도움이 될 수 있습니다. ?
40과 같이 XOR되어 (값이 0이되어야 함) 중복되어 있는지 확인해야합니다. 여기서 우리는 배열에서 첫 번째 정수와 0을 XOR하고 배열에서 후속 숫자로 결과를 얻습니다. 무엇이 누락 되었습니까?/
"이 배열의 요소 하나를 제외한 모든 요소에 중복이 있습니다."라고 말한 것 같습니다. –