我需要在两个int数组中找到相同的值(如果有的话)。 我认为它适用于二进制搜索,但我不知道如何做到这一点。 e.g:
g1[95 78 99 95 35 65 95]
g2[67 100 95 76 95 99 60]
the function returns 2 (for 95 and 99).
答案 0 :(得分:1)
您可以使用Enumerable.Intersect
:
int[] duplicates = g1.Intersect(g2).ToArray();
如果您只想知道重复数量:
int duplicates = g1.Intersect(g2).Count();
答案 1 :(得分:1)
您可以使用LINQ Intersect
var g1 = new[] { 95, 78, 99, 95, 35, 65, 95 };
var g2 = new[] { 67, 100, 95, 76, 95, 99, 60 };
var result = g1.Intersect(g2).Count();
答案 2 :(得分:1)
Var duplicates = g1.Intersect(g2).Count();
希望它有所帮助。
答案 3 :(得分:0)
试试这个
int[] g1 = { 95, 78, 99, 95, 35, 65, 95 };
int[] g2 = { 67, 100, 95, 76, 95, 99, 60 };
int[] results = g1.Where(x => g2.Contains(x)).Distinct().ToArray();
答案 4 :(得分:0)
每个应该嵌套:
void a(int[] g1, int[] g2)
{
int counter = 0;
foreach (var x in g1)
{
foreach (var y in g2)
{
if (y == x) counter++;
}
}
}
答案 5 :(得分:0)
试试这个
int compare(int g1[], int g2[])
{
int count = 0;
for(int i=0; i < g1.length; i++)
{
for(int j=0; j < g2.length; j++)
{
if(g1[i] == g2[j])
count = count + 1;
}
}
return count;
}
此代码将g1的每个数组元素与所有第二个数组元素(g2)进行比较,如果他找到一个等于增加计数器的元素。代码有点大,但我认为你更容易理解它是如何工作的
答案 6 :(得分:0)
使用相交 var r = g1.Intersect(g2)并使用foreach循环从r获得值。