Given an 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?
解题思路:
这道题主要考察位运算,x ^ x = 0,数组中只有一个数字出现一次,其他数字都出现了两次,对所有数字进行异或运算后,将得到只出现一次的那个数。
代码:
#include <iostream>
#include <vector>
using namespace std;
int singleNumber(vector<int>& nums)
{
int sum = 0, len = nums.size();
for(int i = 0; i < len; i ++)
{
sum = sum ^ nums[i];
}
return sum;
}
int main()
{
vector<int> nums;
int num;
while(cin>>num)
{
nums.push_back(num);
}
cout<<singleNumber(nums);
}