Your program took more time than expected.Time Limit Exceeded
Expected Time Limit < 3.496sec
Hint : Please optimize your code and submit again.
为什么发生Time Limit Exceeded
?我该如何解决这个问题?
当我运行代码here时,一切正常。但是,当我单击Submit
按钮here时,则显示以下错误:
Your program took more time than expected.Time Limit Exceeded
Expected Time Limit < 3.496sec
Hint : Please optimize your code and submit again.
谢谢。
我的代码是
int testCases = int.Parse(Console.ReadLine().Trim());
while (testCases-- > 0)
{
int arrSize = int.Parse(Console.ReadLine().Trim());
string[] arr = Console.ReadLine().Trim().Split(' ');
for (int i = 0; i < arrSize - 1; i++)
{
if (int.Parse(arr[i]) > int.Parse(arr[i + 1]))
{
Console.Write(arr[i + 1] + " ");
}
else
Console.Write("-1" + " ");
}
Console.Write("-1");
Console.WriteLine();
}
答案 0 :(得分:3)
简单的答案是您的代码太慢。为什么这很重要?
请注意问题中定义的约束:
1≤T≤200
1≤N≤10E7
1≤arr [i]≤1000
每个数组的长度最多可以达到1000万个元素。大量的int解析和字符串连接,大量的分配等。
您可以尝试改进什么代码?
StringBuilder
构建输出字符串,而不是单独的Console.Write
调用;通过单个StringBuilder
调用来编写整个Console.WriteLine
,并清除StringBuilder
供下次迭代使用(避免一遍又一遍地分配另一个大字符串)。Split
和int.Parse
,而该整数解析器可以逐个字符地读取输入数据,而不必始终创建新的字符串。您拥有的输入数据受到很好的约束,因此编写解析器几乎是微不足道的。祝您完成挑战充满好运! :)