给你一个非空整数数组 nums
,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素
假设数组的长度是 2k + 1,其中 k个整数各出现两次,分别是 x1到 xk ,只出现一次的整数是 y。考虑将 2k + 1 个元素做按位异或运算的结果:
x1+x1+x2+x2+x3+...+xk+y
=0+x2+x2+x3+...+xk+y
=0+y
=y
将 2k + 1个元素做按位异或运算的结果是 y,即数组中只出现一次的整数。
public int singleNumber(int[] nums) {
int single = 0;
for (int num : nums) {
single ^= num;
}
return single;
}