【发布时间】:2019-05-24 22:06:28
【问题描述】:
我与hackerrank algorithm problem 有交易。
它适用于所有情况,但 6-7-8-9 除外。它给出超时错误。我在这个级别上花了很多时间。有人看到问题出在哪里了吗?
static long[] climbingLeaderboard(long[] scores, long[] alice)
{
//long[] ranks = new long[scores.Length];
long[] aliceRanks = new long[alice.Length]; // same length with alice length
long lastPoint = 0;
long lastRank;
for (long i = 0; i < alice.Length; i++)
{
lastPoint = scores[0];
lastRank = 1;
bool isIn = false; // if never drop in if statement
for (long j = 0; j < scores.Length; j++)
{
if (lastPoint != scores[j]) //if score is not same, raise the variable
{
lastPoint = scores[j];
lastRank++;
}
if (alice[i] >= scores[j])
{
aliceRanks[i] = lastRank;
isIn = true;
break;
}
aliceRanks[i] = !isIn & j + 1 == scores.Length ? ++lastRank : aliceRanks[i]; //drop in here
}
}
return aliceRanks;
}
【问题讨论】:
-
虽然我鼓励您在业余时间继续进行 Hackerrank 以帮助磨练您的技能,但如果您能更具体地了解您的实际问题会有所帮助。您究竟遇到了什么问题?
-
还要报告调试器如何帮助或没有帮助您。
-
“它在所有情况下都有效,除了 6-7-8-9”不足以准确解释帖子中的内联问题。 “我正在处理 {link}”不是提出问题/提供有关 SO 详细信息的可接受方式 - 帖子必须包含足够的信息,以便在没有任何链接的情况下独立存在。
-
您只需要找到一种更有效的方法来确定下一个分数在排名中的位置。您当前拥有的内容将在 n^2 时间内运行,但如果您利用有序的分数,您可以做得更好。
-
你可以在大约 6 行 linq 中做到这一点,但我不确定你会理解它
标签: c#