一个整数数组中只有一个数仅出现一次,其他整数均出现两次。要求不适用其他内存求出该整数。
//leetcode题
class Solution {
public:
int singleNumber(vector<int>& nums) {
for(int i=1; i<nums.size();i++)
{
nums[0] ^= nums[i];
}
return nums[0];
}
};
思路:由于只有一个整数出现一次,其他数都出现两次,而相同的数进行按位异或时结果为零。因此只需要将该数组依次按位异或,即可将其他出现两次的数异或为零,获得结果即为仅出现一次的数。