Su primer paso es dejar de pensar en términos del idioma y las bibliotecas a los que está acostumbrado y comenzar a pensar en términos un poco más abstractos. Es decir, para cada problema, pregunte “¿qué necesita hacer esto?”, Luego busque una estructura de datos o algoritmo adecuado (los dos a menudo van de la mano).
Debe comenzar con lo básico: matrices, listas enlazadas simples, pilas, colas, tablas hash (muy simples). A continuación, puede ordenar y buscar, árboles (binarios), árboles equilibrados, gráficos (incluida la búsqueda de ruta básica), colas de prioridad, conjuntos, máquinas de estado, etc.
Recomiendo no intentar aprender esto de forma aislada; es mejor comenzar con los problemas que le interesan e intentar encontrar soluciones elegantes: esta es una buena manera de comprender las nuevas estructuras de datos y algoritmos en contexto.
- Cómo resolver un problema de coincidencia de patrones de cadena sin usar funciones de expresión regular incorporadas
- ¿Por qué mi profesor sugiere que usemos bucles en lugar de recurrencia en el código de producción?
- ¿Cómo podemos implementar las funciones de deshacer y rehacer en una cola de doble final?
- ¿Por qué Lua está diseñado de tal manera que obtener el tamaño de una tabla es O (n) en el tamaño de la tabla?
- ¿Qué es la inserción táctica?
Puede obtener muchas respuestas y comentarios de StackOverflow y CodeReview; No hay necesidad de un mentor personal.
Oh, lea las “Perlas de programación” de Jon Bentley: es muy divertido y le enseñará mucho sobre cómo abordar los problemas de programación.