136.Single Number
相关链接
背景知识
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
solution
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];
}
};