新年混沌黑客实践题-C#解优化 static void minimumBribes(int[]q) { Int32 TotalCount=0; bool blnsucess=true; Int32[]尺寸=订购量(q); 对于(intI=0;intIx).ToArray(); 返回r; } 静态整数索引(int[]z,int整数) { 对于(intI=0;intI
此代码工作正常,但其运行时太长。 我在HackerRank中被“由于超时而终止”。然而,解决方案在本地计算机上运行良好,但需要更多的时间。 问题链接: 样本输入 2(测试用例的数量) 5(排队人数) 2 1 5 3 4(n个描述队列最终状态的空格分隔整数) 5(排队人数) 2 5 1 3 4(描述队列最终状态的n个空格分隔整数) 它必须打印一个整数,表示所需的最小行数,如果无法进行行配置,则该整数将过于混乱 输出 三, 太混乱 问题:新年混沌黑客实践题-C#解优化 static void minimumBribes(int[]q) { Int32 TotalCount=0; bool blnsucess=true; Int32[]尺寸=订购量(q); 对于(intI=0;intIx).ToArray(); 返回r; } 静态整数索引(int[]z,int整数) { 对于(intI=0;intI,c#,.net,c#-4.0,visual-studio-2015,C#,.net,C# 4.0,Visual Studio 2015,此代码工作正常,但其运行时太长。 我在HackerRank中被“由于超时而终止”。然而,解决方案在本地计算机上运行良好,但需要更多的时间。 问题链接: 样本输入 2(测试用例的数量) 5(排队人数) 2 1 5 3 4(n个描述队列最终状态的空格分隔整数) 5(排队人数) 2 5 1 3 4(描述队列最终状态的n个空格分隔整数) 它必须打印一个整数,表示所需的最小行数,如果无法进行行配置,则该整数将过于混乱 输出 三, 太混乱 问题: 如何减少其运行时间?目前,我正在使用一个数组。几周前我已经解
如何减少其运行时间?目前,我正在使用一个数组。几周前我已经解决了它,这是我对该问题的解决方案(100%)
static void minimumBribes(int[]q){
int贿赂=0;
布尔混沌=假;
int n=q.长度;
对于(int i=0;i2)
{
混乱=真实;
打破
}
对于(int j=Math.Max(0,q[i]-2);jq[i])
贿赂++;
}
如果(混乱)
控制台。WriteLine(“太混乱”);
其他的
控制台。写线(贿赂);
}
除了挑战提供的方法之外,您不需要任何其他方法我猜StackOverflow不是解决此类问题的正确平台。此外,没有描述此代码的功能。我想它更适合太多嵌套循环。。您至少可以摆脱索引方法并使用内置的Array.IndexOf。这是问题的链接。什么是
intj=Math.Max(0,q[i]-1-1)代码>平均值?你为什么要这样做?@425nesp,因为任何大于q[i]的数字都不可能到达位置q[i]-2,因为只允许两次贿赂。@Gianlucca请提供int j=Math.Max(0,q[i]的解释-1-1
这意味着什么。我知道你提出了这个解决方案。@NishantMendiratta Sam Liao已经解释了你的问题。行int j=Math.max(0,q[I]-2)可以理解为:当我们使用索引时,数字q[I]最多可以提供2个贿赂,因此它可以左移最多2个位置,因此q[I]-2,但假设我们在索引0处,我们不能在左方向上移动超过该值。因此取两个值的最大值。
static void minimumBribes(int[] q)
{
Int32 TotalCount = 0;
bool blnSuccess = true;
Int32[] size = Ordering(q);
for (int intI = 0; intI < q.Length; intI++)
{
Int32 Tempvariable = 0;
Int32 TooChaotic = 0;
Int32 index = Index(size,q[intI]);
do
{
if (q[intI] != size[intI])
{
Tempvariable = size[index];
size[index] = size[index - 1];
size[index - 1] = Tempvariable;
index = index - 1;
TooChaotic = TooChaotic + 1;
if (TooChaotic > 2)
{
break;
}
TotalCount = TotalCount + 1;
}
} while (q[intI] != size[intI]);
if (TooChaotic > 2)
{
Console.WriteLine("Too chaotic");
blnSuccess = false;
break;
}
}
if (blnSuccess)
{
Console.WriteLine(TotalCount);
}
}
static int[] Ordering(int[] z)
{
int[] r = new int[z.Length];
r = z.OrderBy(x => x).ToArray();
return r;
}
static int Index(int[] z,int integer)
{
for (int intI = 0; intI < z.Length; intI++)
{
if(z[intI]== integer)
{
return intI;
}
}
return 0;
}
static void minimumBribes(int[] q) {
int bribe = 0;
bool chaotic = false;
int n = q.Length;
for(int i = 0; i < n; i++)
{
if(q[i]-(i+1) > 2)
{
chaotic = true;
break;
}
for (int j = Math.Max(0, q[i]-2); j < i; j++)
if (q[j] > q[i])
bribe++;
}
if(chaotic)
Console.WriteLine("Too chaotic");
else
Console.WriteLine(bribe);
}