Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 给定两个数组,如何找到其中一个数组中唯一元素的数量?_C_Arrays - Fatal编程技术网

C 给定两个数组,如何找到其中一个数组中唯一元素的数量?

C 给定两个数组,如何找到其中一个数组中唯一元素的数量?,c,arrays,C,Arrays,我有一个我一直在研究的代码,它显示array1的值,这些值是array2的副本,也是array1中其他值的副本,但是我一直很难计算唯一值的数量。[sizeOfA、sizeOfB、a[]和b[]通过主函数获取] int aDupes = 0; int bDupes = 0; int i, j, k; for(i = 0; i < sizeOfA; i++){ for(j = 0; j < sizeOfB; j++){ if(a[i] == b[j]){

我有一个我一直在研究的代码,它显示array1的值,这些值是array2的副本,也是array1中其他值的副本,但是我一直很难计算唯一值的数量。[sizeOfA、sizeOfB、a[]和b[]通过主函数获取]

int aDupes = 0;
int bDupes = 0;
int i, j, k;

for(i = 0; i < sizeOfA; i++){
    for(j = 0; j < sizeOfB; j++){
        if(a[i] == b[j]){
            bDupes++;
        }
    } 
} 
for(i = 0; i < sizeOfA; i++){
    for(j = i+1; j < sizeOfA; j++){
        for(k = 0; k < sizeOfB; k++){
            if(a[i] == a[j] && a[i] == b[k]){
                aDupes++;
            }
        }
    }
}
intadupes=0;
int-bDupes=0;
int i,j,k;
对于(i=0;i
比如说 a[]={1,3,3,5,6,7,8} b[]={1,3,8,2}
将返回aDupes=1;bDupes=4。但是独特元素的数量应该是3(5,6,7)。我如何才能做到这一点?

使用映射,它更容易理解,也更清晰

首先映射array2的所有元素,并通过制作array1的映射来检查array1,依此类推。

int flag=0,unique=0;
int flag=0,unique=0;
for(i = 0; i < sizeOfA; i++){
for(j = i+1; j < sizeOfA; j++){
    for(k = 0; k < sizeOfB; k++){
        if(a[i] != a[j] && a[i] != b[k]){
            flag++;
        }
    }
 }
 if (flag==0){
     unique++;
  } 
 flag=0;
}
对于(i=0;i

unique
变量还将给出数组
a

的唯一元素的值,如果有人能给出返回这些唯一值的动态数组的建议,我将非常感激。:)您应该搜索并阅读有关集合操作的信息。对于“唯一”值,搜索集合差。从
bDupes
中减去
aDupes
,您将获得数组
a[]的所有唯一元素。