349. Intersection of Two Arrays

2018/04/13 leetcode 共 944 字,约 3 分钟

Title

the problem link

Given two arrays, write a function to compute their intersection.

Example: Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].

Note: Each element in the result must be unique. The result can be in any order.

题目大意:求两个集合的交集,注意,要去掉重复元素

Solution

第一次做,用了两个集合,第二个用来删除重复元素,其实可以不用的,再加入后erase就好了

//cpp:
class Solution {
public:
	vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
		unordered_set<int> uset,uset1;
		for (int i = 0; i < nums1.size(); i++) {
			uset.insert(nums1[i]);
		}
		vector<int> v;
		for (int i = 0; i < nums2.size(); i++) {
			if (uset.find(nums2[i]) != uset.end()) {
				uset1.insert(nums2[i]);
			}
		}
		for (auto it : uset1) {
			v.push_back(it);

		}

		return v;
	}
};

别人solution用的一个set就够了

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> m(nums1.begin(), nums1.end());
        vector<int> res;
        for (auto a : nums2)
            if (m.count(a)) {
                res.push_back(a);
                m.erase(a);
            }
        return res;
    }
};

Search

    Table of Contents