5-9只出现一次的数字

解法:使用异或,异或性质:异或两个相同的数,数值回到原值

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的对象放进去。

猜你喜欢

转载自blog.csdn.net/a1111h/article/details/80254669