2016-11-01 28 views
1

我有这样的代码,我一直在工作,显示array1的数组是重复的array1和array1中的其他值的重复值,但我一直有困难计算唯一值的数量。 [sizeOfA,sizeOfB,一个[]和b []通过主函数而获得]C - 给定两个数组,你如何找到一个数组中唯一元素的数量?

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++; 
      } 
     } 
    } 
} 

因此,例如 一个[] = {1,3,3,5,6,7,8} b [] = {1,3,8,2} 会返回aDupes = 1; bDupes = 4。但是独特元素的数量应该是3(5,6,7)。我怎样才能做到这一点?

+0

此外数组的独特元素的值,如果任何人都可以给这些返回唯一值的动态数组的意见,我会很感激它极大地。 :) – Grum

+2

您应该搜索并阅读* set操作*。对于“唯一”值搜索*设置差*。 –

+0

从'bDupes'减去'aDupes',你将得到数组'a []''的所有唯一元素 – Nutan

回答

0

使用映射,理解起来更加简单明了。

首先映射array2的所有元素,并通过制作数组1的映射等来检查array1。

1
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; 
} 

unique变量会给a

相关问题