有个数组列表,List<int[]> arr,数组元素为6个,号码最大值为35,
现希望对数组两两比较,求它们之间有几个相同元素。
我所能想到的最高效的方法如下所示,求其它更高效的算法: for (int i = 0; i < arr.Count(); i++)
{
int[] exist = new int[36];
foreach (int n in arr[i])
{
exist[n] = 1;
} for (int j = i + 1; j < arr.Count(); j++)
{
int count=0;
foreach (int t in arr[j])
{
count += exist[t];
}
} //处理count }
现希望对数组两两比较,求它们之间有几个相同元素。
我所能想到的最高效的方法如下所示,求其它更高效的算法: for (int i = 0; i < arr.Count(); i++)
{
int[] exist = new int[36];
foreach (int n in arr[i])
{
exist[n] = 1;
} for (int j = i + 1; j < arr.Count(); j++)
{
int count=0;
foreach (int t in arr[j])
{
count += exist[t];
}
} //处理count }
{
int[] exist = new int[36];
foreach (int n in arr[i])
{
exist[n] = 1;
} for (int j = i + 1; j < arr.Count(); j++)
{
int count=0;
foreach (int t in arr[j])
{
count += exist[t];
} //处理count
}
}
var newary = ary.GroupBy(t => t).Select(t => new { count = t.Count(), key = t.Key }).Where(t => t.count > 1).ToArray();
foreach (var t in newary)
Console.WriteLine(t.key + ":" + t.count);
for (int i = 0; i < arr.Count(); i++)
{
js[arr[i]] = js[arr[i]]+1; }
试过,用LINQ效率不是一般的低,比我慢10倍不止
int[] arr2 = { 1, 13, 11, 22, 32, 35, 24 };
string arr1str = ",";
int count = 0;
foreach (int i in arr1)
{
arr1str += i.ToString() + ",";
}
foreach (int i in arr2)
{
if (arr1str.Contains("," + i.ToString() + ","))
count++;
}