来源:
题目描述:
349.两个数组的交集

思路:
unordered_set做映射效率最高,取值操作最方便 有去重效果
- 选用unordered_set<int> result_set 存放结果
- 将nums1中元素放到 unordered_set<int> nums_set中
- 遍历nums2中元素与nums1中元素比较 找到重复的插入result_set中
代码实现:
来源:代码随想录
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result_set; //存放结果,用set可以去重
unordered_set<int> nums_set(nums1.begin(),nums1.end()); //将nums1元素放到nums_set中
for(int num : nums2){
//拿num2元素跟num1中元素比较
if(nums_set.find(num)!=nums_set.end()){
result_set.insert(num);
}
}
return vector<int>(result_set.begin(),result_set.end());
}
};
数组方式:

class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result_set; // 存放结果,之所以用set是为了给结果集去重
int hash[1005] = {0}; // 默认数值为0
for (int num : nums1) { // nums1中出现的字母在hash数组中做记录
hash[num] = 1;
}
for (int num : nums2) { // nums2中出现话,result记录
if (hash[num] == 1) {
result_set.insert(num);
}
}
return vector<int>(result_set.begin(), result_set.end());
}
};
文章介绍了如何利用C++中的unordered_set数据结构来高效地计算两个整数数组的交集,通过创建两个unordered_set,一个存储nums1的元素,另一个用于存储结果并去重。遍历nums2,对比nums1,将交集元素插入结果集中。
482

被折叠的 条评论
为什么被折叠?



