Concept原理
If we take XOR of zero and some bit, it will return that bit
a⊕0=a(0异或任何数得任何数)
If we take XOR of two same bits, it will return 0
a⊕a=0(相同的两个数异或为0)
a⊕b⊕a=(a⊕a)⊕b=0⊕b=b(异或满足交换律)
So we can XOR all bits together to find the unique number.
Given a non-empty 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?
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Example 1:
Input: [2,2,1]
Output: 1
Example 2:
Input: [4,1,2,1,2]
Output: 4
class Solution {
public:
int singleNumber(vector<int>& nums) {
int len = nums.size();
for(int i = 1; i < len; i++)
nums[0] ^= nums[i];
return nums[0];
}
};
原文:https://www.cnblogs.com/qwfand/p/12615072.html