leetcode 349. Intersection of Two Arrays

找出两个数组相同的元素。返回相同的元素集合即可。

两个思路:

1. 先将num1转为集合set1(去重),再遍历num2,查找set1中有没有出现。

2. 哈希,用两个unordered_map<int, bool>,再遍历即可。

这里用方法2:

    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        int mx_size = INT_MIN;
        int mi_size = INT_MAX;
        unordered_map<int, bool> m1;
        unordered_map<int, bool> m2;
        for (auto i : nums1) {
            m1[i] = true;
        }
        for (auto i : nums2) {
            m2[i] = true;
        }
        vector<int> ret;
        auto it = m1.begin();
        for (; it != m1.end(); ++it) {
            int k = it->first;
            int v = it->second;
            auto it2 = m2.find(k);
            if (it2 == m2.end())
                continue;
            ret.push_back(k);
        }
        return move(ret);
    }

 

posted on 2018-02-09 12:14  willaty  阅读(98)  评论(0编辑  收藏  举报

导航