- leet_code:链接
- 题目说明:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
- 复杂度要求:
- 算法应该具有线性时间复杂度o(n)
- 不使用额外空间来实现o(1)
- 技巧性:使用异或进行位运算
- c++ 代码实现
#include<iostream>
using namespace std;
#include<vector>
int single_number(vector<int> data)
{
int result = 0;//0与任何数异或均为任何数本身
for (vector<int> ::iterator iter = data.begin(); iter != data.end(); iter++)
{
result ^= *iter;
}
return result;
}
int main(int argc, char* argv[])
{
vector<int> data = {1, 1, 4, 3, 2, 4, 2};
cout<<single_number(data)<<endl;
system("pause");
return 0;
}