1 描述:
给定一个非空整数数组,除了某个元素只出现一次外,其余每个元素均出现两次,找出那个只出现一次的元素。不使用额外空间实现
样例:
输入:[2,2,1]
输出 1
输入:[4,1,2,1,2]
输出 4
2 实现
public static void singleNumber() {
int nums[] = new int[] {4,1,2,1,2};
int n = 0;
for(int i=0;i<nums.length;i++) {
n ^= nums[i];
}
System.out.println(n);
System.out.println(4^1^2^1^2);
}
3 总结
位运维 异或的场景。 异或有如下规则:
a ^ 0 = a
a ^ a = 0
a^1 = a +1
a^-1 = -(a+1)