输出数组中只出现一次的数字:我们使用的方法是按位异或的方法
因为当0与一个数按位异或的时候,就成了这个数,如果再次异或这个数的话,就会再次变成0,利用按位异或的这个性质就可以找出数组中只出现一次的数字
#include <iostream>
#include <vector>
using namespace std;
int singleNumber(vector<int>& nums)
{
int res = 0;
for (auto &i : nums)
{
res ^= i;
}
return res;
}
int main()
{
int nums[11] = { 1, 5, 6, 3, 5, 2, 1, 8, 6, 3, 8 };
vector<int> v;
v.insert(v.begin(), nums, nums + 11);
cout << singleNumber(v);
return 0;
}
这个方法的时间复杂度只有O(n)