所以我有
A = {1,3,3,4}
B = {5,4,7,3}
我想看看数组 B 的元素在数组 A 中出现了多少次,但是,我只想对数组 A 中的每个元素计算一次。因此,如果 3 出现多次,则 3 将只计算一次,依此类推。
在这里,我的答案是 2,因为我有 3,4 个,它们在数组 B 中,也在数组 A 中。
这是我到目前为止:
int count = 0;
for(int z = 0; z <4; z++)
{
for(int y = 0; y <4; y++)
{
if(arrayA[z] == arrayB[y])
{
count++;
}
}//end for loop
}//end for loop
当我运行这个时,我得到 3。我知道为什么。我正在计算数组 A {3,3,4} 中的重复项。我怎么不计算它们?我被困住了。
这是我一直坚持的一个次要功能。
最佳答案
一个简单的解决方案可能是引入另一个数组来存储计数并将其初始化为零(我使用的是 c#,因此默认情况下它会用 0 初始化 int 数组)。
int[] totals = new int[10];
int[] arrayA = new int[] { 1,3,3,4};
int[] arrayB = new int[] { 5,4,7,3};
for (int z = 0; z < 4; z++)
{
for (int y = 0; y < 4; y++)
{
if (arrayA[z] == arrayB[y])
{
totals[arrayA[z]]++;
}
}//end for loop
}//end for loop
// Count your numbers through indices
for (int i = 0; i < totals.Length; i++)
{
if (totals[i] > 0)
{
count++;
}
} //end for loop
关于arrays - 如何计算两个数组之间相同数量的元素,不包括重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622164/