两个数组取交集C++
时间: 2024-12-10 12:33:58 浏览: 12
在C++中,要计算两个数组的交集,可以采用多种方法。这里提供一种常见的做法,即使用哈希集合(如`std::unordered_set`)来存储第一个数组的所有元素,然后遍历第二个数组,检查每个元素是否在哈希集合中存在。以下是步骤:
```cpp
#include <iostream>
#include <unordered_set>
#include <vector>
std::vector<int> intersect(std::vector<int>& nums1, std::vector<int>& nums2) {
// 创建一个哈希集合来存储nums1的元素
std::unordered_set<int> hashSet(nums1.begin(), nums1.end());
// 创建一个结果向量用于存放交集
std::vector<int> result;
// 遍历nums2,如果元素在hashSet中,则添加到结果中
for (int num : nums2) {
if (hashSet.find(num) != hashSet.end()) {
result.push_back(num);
}
}
return result;
}
int main() {
std::vector<int> nums1 = {1, 2, 2, 1};
std::vector<int> nums2 = {2, 2};
std::vector<int> intersection = intersect(nums1, nums2);
for (int i : intersection) {
std::cout << i << " ";
}
return 0;
}
```
在这个例子中,函数`intersect`会返回两个数组`nums1`和`nums2`中的交集元素。注意,这种方法假设数组中不会有重复的整数,并且不考虑顺序。
阅读全文