[笔试]两个整数集合求交集并集

A,B两个整数集合,设计一个算法求他们的交集,尽可能的高效。

交集:

vector<int> intersectionOf(vector<int> A, vector<int> B)
{
    vector<int> res;
    hash_set<int> ans;
    for(int i = 0; i < A.size(); i++)
        ans.insert(A[i]);
    for(int i = 0; i < B.size(); i++){
        if(ans.find(B[i]) != ans.end())
            res.push_back(B[i]);
    }
    return res;
}

并集:

vector<int> unionOf(vector<int> A, vector<int> B)
{
    vector<int> res;
    hash_set<int> ans;
    for(int i = 0; i < A.size(); i++)
        ans.insert(A[i]);
    for(int i = 0; i < B.size(); i++){
        ans.insert(B[i]);
    }
    for(auto it = ans.begin(); it != ans.end(); it ++)
        res.push_back(*it);
    return res;
}

版权声明:本文为angelsmiles原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。