解法:使用异或,异或性质:异或两个相同的数,数值回到原值
int singleNumber(vector<int>& nums) {
int singleNum = 0;
for (int j = 0; j < nums.size(); ++j) {
singleNum ^= nums[j];
}
return singleNum;
}
解法一:使用sort排序数组,然后判断是否相同
int singleNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
for (int i = 0; i < nums.size();){
if (nums[i] != nums[i + 1])
{
return nums[i];
}
else{i = i + 2;}}
}
解法二:
int singleNumber(vector<int>& nums) {
map<int, int> ms;
for(int i = 0 ; i < nums.size(); i++)
{
ms[nums[i]]++;
}
for(pair<const int, int> m : ms){
if(m.second != 2)
return m.first;
}
return 0;
}
C++中map提供的是一种键值对容器,里面的数据都是成对出现的:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。
pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。