가장 인기 있는 질문 100의 질문 136:
먼저 코드를 붙여넣습니다.
class Solution {
public int singleNumber(int[] nums) {
//异或
int ans = 0;
for(int i = 0; i < nums.length;i++){
ans = ans ^ nums[i];
}
return ans;
}
}
문제 해결 아이디어:
이 문제는 XOR을 사용하여 해결해야 합니다. XOR 알고리즘은 다음을 따릅니다.
따라서 배열의 한 요소만 단일이고 다른 요소가 두 번 나타나는 경우 XOR 연산의 가환 법칙 및 연관 비율을 따릅니다. 예: 1 ^ 2 ^ 2 ^ 3 ^ 3 ^ 4 ^ 4 = 1; 2^1^3^2^3 = 1;
따라서 배열을 한 번만 탐색하고 매번 이 수를 XOR하면 솔루션을 완료할 수 있습니다.