Siendo ingeniero, hay tantos problemas que tengo que resolver todos los días que entras en el flujo con bastante facilidad. Pero en el trabajo, en su mayoría, resuelve el mismo tipo de problemas a diario y olvida que existen otros tipos de problemas interesantes que requieren que piense de manera diferente. Un excelente punto de partida es Leetcode o cualquier otro sitio net de acertijos de codificación diarios. ¡Repasemos cómo comenzar y las mejores prácticas!
Creo que Leetcode hace un gran trabajo al tener acertijos diarios que salen en sus “Desafíos mensuales”. Cada mes los problemas comienzan fáciles o medios, y progresivamente se vuelven más difíciles. Tiene 24 horas para enviar su solución para el crédito, después de eso, aún puede resolver el problema, pero no por ninguna moneda de Leetcode.
El primer paso es leer el problema y comprender las soluciones de ejemplo que le brindan. Trabaje con los ejemplos en papel si es necesario, divida cada problema en una serie de pasos para trabajar hacia la solución. Comience a pensar en posibles casos extremos que no se consideran que su diseño debe tener en cuenta.
El segundo paso es escribir un pseudocódigo abreviado. Tiendo a pensar en este paso como la entrevista de codificación de pizarra de alto nivel. Ejecute el algoritmo que va a utilizar para resolver el problema. Anote las estructuras de datos que pueda necesitar y considere la complejidad del tiempo y el espacio. Este es el paso más fácil de arreglar, pero cuando me quedo atascado, este es el trabajo al que me refiero para ayudarme a volver a la normalidad.
El tercer paso es codificar sus casos de prueba. Ahora que tiene una buena concept de lo que necesita hacer, escriba algunas pruebas adicionales y escriba sus casos de prueba en código si está codificando fuera de su editor. Leetcode no le dirá qué pruebas fallaron fuera de las que le dan (¿quizás lo hagan si tiene premium? No estoy seguro tbh)
Consejo profesional: Codifique en su editor. No en el navegador.
El cuarto paso es codificar e iterar en su diseño. El hecho de que pase todas las pruebas no significa que sea perfecto. Piense en posibles optimizaciones o formas de hacer que su código sea más versatile.
El paso cinco es observar lo que hicieron otras personas y ver si hay algo que pueda aprender de su enfoque del problema. A menudo hay varias soluciones, así que no se sorprenda si ve algo ligeramente diferente.
Esto puede no ser sorprendente, pero cuantos más problemas resuelvas, mejor te vuelves. Así es como es. Leetcode hace un buen trabajo al brindarle solo la información que necesita para resolver un problema y cuantos más problemas de este tipo haga, más cómodo comenzará a comprender el mensaje y planificar su enfoque. La esperanza es que al hacer estos ejercicios a menudo continúes mejorando tus habilidades de programación para que cuando tengas que abordar un tipo diferente de problema en el trabajo, puedas recurrir a cualquier número de ejemplos.