1.位运算 异或
首先,一个数模0还是这个数
第二,一个数模本身为0:
第三,异或满足乘法交换律:
解:
代码:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int result=0;
for(int i=0;i<nums.size();i++)
{
result^=nums[i];
}
return result;
}
};
2.set
class Solution {
public:
int singleNumber(vector<int>& nums) {
unordered_set <int> once;
for(auto rar:nums)
{
if(once.count(rar)) once.erase(rar);
else
once.insert(rar);
}
int ans=0;
for(auto j:once)
ans=j;
return ans;
}
};
3.map
class Solution {
public:
int singleNumber(vector<int>& nums) {
int result=0;
unordered_map<int,int> oncemap;
for(int i=0;i<nums.size();i++)
{
oncemap[nums[i]]++;
}
unordered_map<int,int>:: iterator it=oncemap.begin();
for(it=oncemap.begin();it!=oncemap.end();it++)
{
if(it->second==1)
result=it->first;
}
return result;
}
};