原题:
Given an 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?
大意:
给你一个数组,除了一个元素之出现一次以外,剩下的均出现两次。让你不用额外内存和线性时间去找出这个数。
class Solution {
public:
int singleNumber(vector<int>& nums)
{
int a=nums[0];
for(int i=1;i<nums.size();i++)
a=a^nums[i];
return a;
}
};
解答:
这里用到了位运算疑惑的性质,如果有一堆数,其中只有一个数出现了奇数次,那么就可以用不断疑惑的方式找出这个数。