题目描述
给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
本题思路
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result_set;
unordered_set<int> set(nums1.begin(), nums1.end());
for (int num : nums2) {
if (set.find(num) != set.end()) {
result_set.insert(num);
}
}
return vector<int>(result_set.begin(), result_set.end());
}
};
set解决 (set和multiset 底层实现是红黑树 unordered_set底层实现是哈希表)
利用unordered_set(无序,数值不可重复,插叙效率为O(1))
nums_set.find(num) != nums_set.end() .find()如果找到会返回指向容器中第一个元素的正向迭代器 否则返回指向容器中最后一个元素之后位置的正向迭代器
首先将数组中的元素转变为unordered_set 会自动去重,定义相同类型result来存放结果。以nums2中的元素为基准在nums1中查找,如果找到将之放入result,最后返回result(记得将类型转变成vector)