以下代码工作正常。唯一的问题是如果我给出一个长度为200,000的数组值,需要大约1个小时才能完成。以下是我的代码。
我有一个数据文件在此处,其中包含data和data2字符串值。 data数组以降序排列,data2以升序排列。
我有一个数据文件在此处,其中包含data和data2字符串值。 data数组以降序排列,data2以升序排列。
public void GetInputs()
{
string data;
string data2;
string[] scores_temp = data.Split(' ');
int[] scores = Array.ConvertAll(scores_temp, Int32.Parse);
string[] alice_temp = data2.Split(' ');
int[] aliceScore = Array.ConvertAll(alice_temp, Int32.Parse);
var distinctScores = scores.Distinct().ToList();
int rank = 0;
for (int j = 0; j <= aliceScore.Length-1; j++)
{
for (int i = distinctScores.Count-1; i >= 0; i--)
{
if (aliceScore[j] >= distinctScores[i])
{
rank = distinctScores.IndexOf(distinctScores[i]);
}
else if (aliceScore[j] < distinctScores[i])
{
rank = distinctScores.IndexOf(distinctScores[i]);
rank += 2;
break;
}
}
if (rank.ToString() == "0") {
Console.WriteLine(rank.ToString().Replace("0", "1"));
} else {
Console.WriteLine(rank); };
}
Console.ReadLine();
}
IndexOf
函数,你还可以简化循环内部的逻辑。 - Aamir Masood