Al resolver problemas en cualquier juez en línea, a veces se puede exceder el límite de tiempo . A continuación se muestran algunas de las formas de optimizar el código:
- Minimice el uso de bucles dentro de bucles, es decir, bucles anidados : por ejemplo:
for(i = 0 ; i < n ; i++) { for(j = 0 ; j < n ; j++) { // Your Code } }
El código anterior realizará N*N iteraciones y llevará más tiempo, para evitar esto, la idea es pensar en un enfoque que minimice el uso de bucles dentro de bucles.
- No prefiera una string larga de if-else , en su lugar, prefiera usar declaraciones de cambio : por ejemplo:
if(condition 1) { } else { if(condition 2) { } else { } }
Supongamos que hay otra condición 3, luego el flujo de código es verificar primero la condición 1 , luego la condición 2 y luego alcanzará la condición 3 . Por lo tanto, requiere 3 números de operación. La idea es usar el siguiente código:
switch (c) { // Condition 1 case 1: break; // Condition 2 case 2 : break; // And so on }
En el caso del cambio, el compilador irá directamente a la condición y la ejecutará sin ejecutar las otras condiciones.
- En lugar de usar «i = i + 1» , prefiera usar «++i» , y en lugar de «i = i + 3» , use «i +=3» .
- Es mejor preferir pre-incremento o pre-decremento sobre post-incremento y post-decremento hasta ya menos que sea necesario. Por ejemplo:
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++;
- También se debe evitar el uso del puntero , donde se puede evitar. Un puntero apunta a la dirección de una variable, esa dirección se utilizará para acceder a la variable. Por lo tanto, intente acceder directamente a la variable, ya que se pueden usar directamente y, por lo tanto, se puede reducir el tiempo.
- Use la clase StringBuilder o StringBuffer para la concatenación en lugar del operador ‘”+”
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.append(c); String x=sb.toString();
Ambos hacen el mismo trabajo (hacer una string de 10000 copias del carácter ‘a’). Pero la segunda opción toma 10 veces menos tiempo que la primera.
Por lo tanto, siempre es recomendable usar StringBuilder (en Java) en lugar del operador «+» para la concatenación.