我试图找到两组 10 位数字的并集,我正在传递三个 int 数组:first、second 和 comp(这将保存并集)。
到目前为止,我已经将 first 和 second 添加到一个数组中。我正在考虑在 comp[] 中找到匹配的索引,然后通过删除它们进行过滤。我认为有一种更简单的方法。谁能给我一个提示?
基本上我正在服用
first[] = [1,2,3,4,5,6,7,8,9,10];
second[] = [1,2,3,4,11,12,13,14,15,16];
我想回去
comp[] = [5,6,7,8,9,10,11,12,13,14,15,16];
数字不一定按顺序排列。
int compound(int first[],int second[],int comp[]){
int i=0;
int indicies[20];
for(int j = 0; j<SIZE; j++){
comp[i]=first[j];
i++;
}
for(int k = 0; k<SIZE; k++){
comp[i]=second[k];
i++;
}
int z=0;
for(int l = 0; l<SIZE*2; l++){
for(int m = 0; m<SIZE*2; m++){
if(comp[l]==comp[m]){
indicies[z]=m;
z++;
}}}
return 0;
}
最佳答案
好的第一步是(几乎)总是排序。
对两个输入集进行排序(除非您知道它们已经排序)。
然后一次遍历两者(两个索引)并且只将那些满足您的条件的元素添加到输出中(似乎是并集减去交集,因此只有一个)。
奖励:输出集将被排序。
关于c - 找出两组 10 位数字的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26499016/