leetcode算法之 Single Number
题目描述:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
要求: 时间复杂度O(n),空间复杂都O(1)
示例:
- 输入: [2,2,1]
- 输出: 1
- 输入: [4,1,2,1,2]
- 输出: 4
解决方案:
方法一:异或
class Solution{
public:
int singleNumber(vector<int>& nums){
int x = 0;
for (auto i : nums){
x ^= i;
}
return x;
}
};
方法二:
class Solution{
public:
int singleNumber(vector<int>& nums){
return accumulate(nums.begin(), nums.end(), 0, bit_xor<int>());
}
};