解题思路:
利用异或操作的性质:
1.恒定律:A ^ 0 = A
2.归零率:A ^ A = 0
3.交换律:A ^ B = B ^ A
4.结合律:(A ^ B) ^ C = A ^ (B ^ C)
因为题中已说明,其余元素都出现了两次,所以,遍历一遍数组,将所有元素进行异或,得到的结果就是只出现一次的那个数。
class Solution {
public:
int singleNumber(vector<int>& nums) {
int res = 0;
//遍历nums数组,进行异或操作
for(auto num: nums){
res = res ^ num;
}
return res;
}
};