c - 找出两组 10 位数字的并集

标签 c

我试图找到两组 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/

相关文章:

c - 如何删除句子中的字符串?

c - 数组到 C 中的链表函数;如何遍历列表以附加节点?

c - 寻找复制到缓冲区的字符串

C 反汇编为 ARMv6 : Meaning of Dot (. ) 在标签之前

c - Mac OS 7-9 - C 编程

C - 如何使函数返回指针?

c - 算术表达式也无法在 yacc 语法中正确解析

c - 运行C程序时出现段错误

c - vim:C 将大括号缩进与 case 同级

C 编程 if 语句中的 strcmp 不计算 true