头歌计算两个数组的交集
时间: 2025-07-06 07:55:50 浏览: 13
### 使用 JavaScript 计算两个数组的交集
为了计算两个数组的交集,在 JavaScript 中可以利用 `Set` 对象来简化操作。通过创建集合并使用其内置方法如 `has()` 可以高效地找到共同元素。
```javascript
function intersectionWithSets(arr1, arr2) {
const set1 = new Set(arr1);
const result = [];
for (let item of arr2) {
if (set1.has(item)) {
result.push(item);
}
}
return [...new Set(result)]; // 去重处理
}
```
上述函数首先将第一个数组转换成一个 `Set`,以便快速查找是否存在某个值;接着遍历第二个数组中的每一项,并检查该项是否存在于由第一个数组构建而成的 `Set` 当中。如果存在,则将其加入结果列表里。最后返回的结果会再次经过去重处理以确保最终得到的是唯一的交集成员[^1]。
对于 C++ 来说,可以通过哈希表(unordered_map 或者 unordered_set)实现高效的交集运算:
```cpp
#include <vector>
#include <unordered_map>
std::vector<int> intersect(std::vector<int>& nums1, std::vector<int>& nums2) {
std::unordered_map<int, int> countMap;
for (auto num : nums1) ++countMap[num];
std::vector<int> res;
for (auto num : nums2) {
if (--countMap[num] >= 0) res.push_back(num);
}
return res;
}
```
这段代码先统计了 `nums1` 各个元素出现次数存入哈希表中,再迭代访问 `nums2` 并依据哈希表更新计数器的同时收集符合条件即在两者都存在的那些数值作为交集的一部分[^2]。
当面对 LeetCode 上提到的情况时——特别是输入数据量较大以至于无法一次性全部载入内存的情况下——一种可能的做法是从文件流读取部分数据块至缓冲区来进行分批处理,每次只保留当前批次内发现的新交集项目直到完成整个过程[^3]。
阅读全文
相关推荐















