这道题要求的是求出任意俩个集合之间的交集
需要用hash表来表示出来
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main() {
int hash[1000] = {0};
int a[10] = {4, 9, 5};
int b[10] = {9, 4, 9, 8, 4};
bool seen[1000] = {false}; // 用于记录是否已经输出过
for (int i = 0; i < 3; i++) {
hash[a[i]] = 1;
}
for (int i = 0; i < 5; i++) {
if (hash[b[i]] == 1 && !seen[b[i]]) {
printf("%d\n", b[i]);
seen[b[i]] = true; // 标记为已输出
}
}
return 0;
}
思路:
我们把第一个集合中出现的所有的元素都标记为1
再遍历第二个集合的时候看里面的元素是否有为1的
如果有就输出b里符合的元素
(但是我们要是遇到重复的元素我们该怎么办呢)
这时候我们用bool型来定义一个数组让我们第一次出现的元素存放到里面
再用一个判断句来筛选重复的
如果用c++就用set集合去重就可以了
这里主要是讲c在不用c++里的数据结构时该做什么