两个数组的交集(C++实现)
时间: 2024-10-06 18:05:00 浏览: 33
在C++中,可以使用多种数据结构和算法来找到两个整数数组的交集。最常见的一种方法是利用哈希集合(如STL中的unordered_set),因为插入和查找操作的时间复杂度都是O(1),这将大大简化我们的程序。
以下是一个简单的C++函数,它接受两个整数数组作为输入,并返回它们的交集:
```cpp
#include <iostream>
#include <vector>
#include <unordered_set>
std::vector<int> intersect(const std::vector<int>& arr1, const std::vector<int>& arr2) {
std::unordered_set<int> set(arr1.begin(), arr1.end());
std::vector<int> intersection;
for (const int& num : arr2) {
if (set.find(num) != set.end()) {
intersection.push_back(num);
set.erase(num); // 避免重复添加
}
}
return intersection;
}
int main() {
std::vector<int> array1 = {1, 2, 2, 1, 3};
std::vector<int> array2 = {4, 5, 2};
std::vector<int> result = intersect(array1, array2);
if (!result.empty()) {
std::cout << "Intersection of the arrays is: ";
for (int i : result) {
std::cout << i << " ";
}
} else {
std::cout << "The arrays have no common elements.\n";
}
return 0;
}
```
这个函数首先创建一个只包含arr1元素的哈希集合,然后遍历arr2,如果发现某个元素也在哈希集合中,就将其添加到结果向量`intersection`中并从集合中删除,避免重复。最后返回结果向量。
阅读全文