求两个数组的交集c++
时间: 2023-12-24 22:03:29 浏览: 98
这里提供两种方法:
方法一:使用set
```python
a = [1, 2, 3, 4, 5]
b = [4, 5, 6, 7, 8]
set_a = set(a)
set_b = set(b)
c = set_a & set_b
print(list(c)) # 输出 [4, 5]
```
方法二:使用列表推导式
```python
a = [1, 2, 3, 4, 5]
b = [4, 5, 6, 7, 8]
c = [i for i in a if i in b]
print(c) # 输出 [4, 5]
```
以上两种方法都可以求出两个数组的交集c。
相关问题
用c++实现求两个数组的交集
```c
#include <stdio.h>
void intersection(int array1[], int size1, int array2[], int size2);
int main() {
int array1[] = {1, 2, 3, 4, 5};
int array2[] = {3, 4, 5, 6, 7};
int size1 = sizeof(array1) / sizeof(array1[0]);
int size2 = sizeof(array2) / sizeof(array2[0]);
intersection(array1, size1, array2, size2);
return 0;
}
void intersection(int array1[], int size1, int array2[], int size2) {
int i, j;
printf("Intersection of the two arrays: ");
for (i = 0; i < size1; i++) {
for (j = 0; j < size2; j++) {
if (array1[i] == array2[j]) {
printf("%d ", array1[i]);
break;
}
}
}
}
```
这个程序会输出:Intersection of the two arrays: 3 4 5。
两个数组的交集(C++实现)
在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`中并从集合中删除,避免重复。最后返回结果向量。
阅读全文