c_cpp 找出数字数组中的重复数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 找出数字数组中的重复数字相关的知识,希望对你有一定的参考价值。

// use sorting and unordered_set
vector<int> find_duplicate_numbers(vector<int> &nums) {
    vector<int> res;
    if(nums.empty()) return res;
    unordered_set<int> se;
    sort(nums.begin(), nums.end());
    for(int i=1; i<nums.size()-1; ++i) {
        if(nums[i] == nums[i-1] || nums[i] == nums[i+1])
            se.insert(nums[i]);
    }
    for(auto i : se) res.push_back(i);
    return res;
}

// use hash, better. 
vector<int> find_duplicate_numbers(vector<int> &nums) {
    vector<int> res;
    if(nums.empty()) return res;
    unordered_map<int, int> mp;
    for(auto i : nums) mp[i]++;
    for(auto p : mp) {
        if(p.second > 1)
            res.push_back(p.first);
    }
    return res;
}

以上是关于c_cpp 找出数字数组中的重复数字的主要内容,如果未能解决你的问题,请参考以下文章

面试题3:找出数组重复的数字

1-找出数组中重复的数字

不修改数组找出重复的数字

面试题3:不修改数组找出重复的数字

剑指offer第1题找出数组中重复的数字

不修改数组找出重复的数字(c语言)