剑指offer 面试题56 - I. 数组中数字出现的次数 [中等]——unordered_map

我的解题:

使用unordered_map

遍历数组,元素没出现过就加入map,出现过就erase掉,最后将剩下的两个数返回

但是这个没有达到空间复杂度的要求

class Solution {
public:
    vector<int> singleNumbers(vector<int>& nums) {
        unordered_map<int,int> m;
        vector<int> res;
        for(int i=0;i<nums.size();i++){
            if(m.count(nums[i]))    m.erase(nums[i]);
            else m[nums[i]]=1;
        }
        unordered_map<int,int>::iterator it;
        it=m.begin();
        res.push_back(it->first);
        it++;
        res.push_back(it->first);
        return res;
    }
};

有大佬使用异或的操作,待我看懂再来。。。

发布了65 篇原创文章 · 获赞 1 · 访问量 489

猜你喜欢

转载自blog.csdn.net/qq_41041762/article/details/105454691