只出现一次的数字
题目
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
要求:
具有线性时间复杂度。
不使用额外空间。
出自:力扣
参考答案
利用异或特点(不带进位的二进制按位相加),几个数做异或运算结果与异或的顺序无关,
将所有的数进行异或即可得到答案。
int singleNumber(std::vector<int>& nums)
{
int single_num = 0;
for(size_t i=0;i<nums.size();i++)
{
single_num ^= nums[i];
}
return single_num;
}