LeetCode349. 两个数组的交集
思路
利用哈希数据结构:unordered_set,其特点在于:
- 1.不再以键值对的形式存储数据,而是直接存储数据的值(对于 unordered_set 容器不以键值对的形式存储数据,也可以这样认为,即 unordered_set 存储的都是键和值相等的键值对,为了节省存储空间,该类容器在实际存储时选择只存储每个键值对的值)
- 2.容器内部存储的各个元素的值都互不相等,且不能被修改
- 3.不会对内部存储的数据进行排序
对于本题只需要将其中一个数组遍历存入unordered_set 容器中,然后通过循环遍历另一个数组中的每个元素,并在unordered_set 容器中查找(find()函数)该元素是否存在,若存在,则在返回值中插入该元素,若不存在,则继续遍历。
代码
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int>res;
unordered_set<int>tmp1(nums1.begin(), nums1.end());
for(int tmp2 : nums2){
if(tmp1.find(tmp2) != tmp1.end()){
res.insert(tmp2);
}
}
return vector<int>(res.begin(), res.end());
}
};
相关题目