Given a non-empty array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Input: [2,2,1]
Output: 1
Example 2:
Input: [4,1,2,1,2]
Output: 4
^ -----按位异或(Xor)是一种可逆运算符,只有在两个比较的位不同时其结果是1,否则结果为0。因此在计算时应先将数值转为二进制,进行位比较,然后把所得的结果转换为原来的进制数。如下例:3^ 5 => 11 ^ 101=110 => 6
aXora=0
aXor0=a
aXoraXorb=b;
所有进行异或得到结果
class Solution {
public int singleNumber(int[] nums) {
int res=0;
for(int temp:nums)
{
res ^=temp;
}
return res;
}
}