求两个数组的交集,然后没有返回-1,c语言
时间: 2024-05-02 19:20:25 浏览: 80
以下是两个数组的交集的C语言实现:
```c
#include <stdio.h>
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {4, 5, 6, 7, 8};
int intersection[5];
int i, j, count = 0;
int flag;
for (i = 0; i < 5; i++) {
flag = 0;
for (j = 0; j < 5; j++) {
if (arr1[i] == arr2[j]) {
flag = 1;
break;
}
}
if (flag == 1) {
intersection[count] = arr1[i];
count++;
}
}
if (count == 0) {
printf("-1\n");
} else {
for (i = 0; i < count; i++) {
printf("%d ", intersection[i]);
}
printf("\n");
}
return 0;
}
```
解释一下代码:
首先定义了两个数组`arr1`和`arr2`,然后定义了一个数组`intersection`用于存放交集。
然后使用双重循环遍历`arr1`和`arr2`,如果发现两个数组中有相同的元素,就将这个元素存入`intersection`数组中,并且计数器`count`自增1。
最后根据计数器的值来判断是否有交集,如果`count`等于0,说明没有交集,输出-1;否则遍历`intersection`数组,输出其中的元素。
注意:以上实现方式的时间复杂度为O(n^2),在处理大规模数据时可能会有性能问题。可以考虑使用哈希表等数据结构来优化。
阅读全文