问题:https://leetcode.com/problems/single-number/
Given an array of integers, every element appears twice except for one. Find that single one.
分析:使用异或位运算符。相同为0,不同为1。如果有两个数均为5,它的的二进制均为0101,两者异或,0101^0101=0000,结果为0。若有三个数3,5,3,则三者异或为0011^0101^0011=0101,结果为5。所以,对该数组所有的元素进行异或操作,出现两次的元素将抵消,最后剩下的结果就是只出现一次的元素。
代码:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int l=nums.size();
int ans=0;
for(int i=0;i<l;i++)
ans ^=nums[i];
return ans;
}
};