原题
Given an array of integers, every element appears twice except for one. Find that single one.
分析
找出一堆数中只出现一次的数。
用Hash做是很简单的,都能想到,后面题目说不用额外的内存。
用按位异或的办法就能解决。
代码
使用hash的版本。
class Solution {
public:
int singleNumber(vector<int>& nums) {
unordered_map<int,int>table;
for(int i=0;i<nums.size();i++)
{
table[nums[i]]=table[nums[i]]+1;
}
for(auto it = table.begin();it!=table.end();it++)
{
if(it->second==1)
return it->first;
else
continue;
}
return nums[0];
}
};
按位异或的办法
class Solution {
public:
int singleNumber(vector<int>& nums) {
if(nums.size()==1)
return nums[0];
for(int i = 1;i<nums.size();i++)
{
nums[0]^=nums[i];
}
return nums[0];
}
};