Soy demasiado lento para implementar algoritmos. ¿Practicar mucho es la única opción? ¿Cómo debo practicar de manera efectiva?

Practica, practica y practica. Es el único camino a seguir.

Aquí hay algunos consejos.

1) Para que el proceso sea más efectivo, agradable e interesante, puede participar en concursos de programación competitivos. Pero ya debería estar familiarizado con los algoritmos básicos y las estructuras de datos, si no está familiarizado con ellos, entonces es mejor estudiar teoría al principio. Es importante tener en cuenta que participar en concursos no le enseñará mucho sobre algoritmos, pero pueden ayudarlo a dominar la resolución de problemas y la codificación.

Recomiendo participar en Codeforces o en concursos Topcoder. Estas plataformas proporcionan regularmente concursos cortos en los que el tiempo juega un papel importante. En estos sitios es posible echar un vistazo a las soluciones de otros participantes. Casi todos los participantes de alta calificación escriben códigos elegantes y efectivos, por lo que definitivamente debe verificar sus soluciones, tal vez encuentre incluso algunos trucos de idiomas que no conoce.

2) Puedes aprender Vim o Emacs para acelerar tu codificación. Estos editores ahorran mucho tiempo si usa lenguajes como C, Python, Javascript, C ++, etc.

Aquí está mi consejo:

  • Aprende a escribir más rápido. Hay muchos sitios en los que puedes practicar (prueba de mecanografía, competiciones, práctica y juegos de mecanografía).
  • Aprenda las funciones STL. No necesita codificar y depurar su propia versión de QuickSort cuando solo puede usar std::sort() , o no necesita escribir su propio analizador para transformar string en int cuando puede usar std::stoi() (estos son solo algunos ejemplos de funciones útiles en ).
  • Practica con el tiempo. Comience con problemas fáciles e intente resolverlos en unos minutos, luego continúe con los más difíciles.
  • Escriba código claro para que la depuración sea más fácil y no pierda tiempo.
  • Y por último, pero no menos importante, está el Occam Razor, es decir, cuando resuelva un problema, piense en muchas soluciones y codifique la más simple (obviamente, debe respetar la memoria y los límites de tiempo). Codifico algoritmos largos y complicados y luego descubro que podría haber resuelto ese problema con menos de la mitad de mi código. Entonces, también la solución que elija puede afectar su velocidad.