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); }
【本文章出自博客园willaty,转载请注明作者出处,误差欢迎指出~】