在解决任何在线法官的问题时,有时可能会超过“时限”。以下是一些优化代码的方法:
- 尽量减少在循环内使用循环,例如嵌套循环:例如:
for(i = 0 ; i < n ; i++)
{
for(j = 0 ; j < n ; j++)
{
// Your Code
}
}
上面的代码将执行N * N次迭代,并且将花费更多时间,为避免这种情况,我们的想法是考虑一种最小化循环在循环内使用的方法。
- 不喜欢使用if-else的长链,而是喜欢使用Switch语句:例如:
if(condition 1)
{
}
else
{
if(condition 2)
{
}
else
{
}
}
假设存在另一个条件3,则代码流首先要检查条件1 ,然后是条件2,然后它将到达条件3 。因此,它需要3次操作。这个想法是使用下面的代码:
switch (c)
{
// Condition 1
case 1:
break;
// Condition 2
case 2 :
break;
// And so on
}
在切换情况下,编译器将直接转到条件并执行它们,而不执行其他条件。
- 而不是使用“ i = i + 1” ,而是使用“ ++ i” ,而不是“ i = i + 3” ,而是使用“ i + = 3” 。
- 在需要之前和之后,最好先递增或递减,而不是递增和递减。例如:
int i = 3;
// It will increment in the same step
++i;
// It will increment in the next step
// so it will take more time
i++;
- 另外,应避免使用指针,在可以避免的地方。指针指向变量的地址,该地址将进一步用于访问变量。因此,请尝试直接访问变量,因为它们可以直接使用,因此可以减少时间。
- 使用StringBuilder或StringBuffer类进行串联,而不是使用“ +”运算符
1.Using "+" operator
String x="";
char c='a';
for(int i=0;i<10000;i++)
x+=c;
2.Using StringBulider/StringBuffer Class
StringBuilder sb=new StringBuilder("");
char c='a';
for(int i=0;i<10000;i++)
sb.apppend(c);
String x=sb.toString();
他们都做同样的工作(制作的万份的“A”字符的字符串)。但是第二个选项所花费的时间比第一个选项少10倍。
因此,始终建议使用StringBuilder(在Java)而不是“ +”运算符进行串联。
如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。