Cómo dejar de resolver miles de problemas de LeetCode y organizar algoritmos en 30 patrones
¿Te suena familiar: abres LeetCode, ves una lista de tres mil problemas, resuelves cinco seguidos y te das cuenta de que tu cabeza es un desastre? Una semana después te sientas ante un problema similar y otra vez no sabes por dónde empezar. La mayoría de la gente intenta desgastar las entrevistas algorítmicas memorizando soluciones específicas de memoria. Pero el aprendizaje memorístico se desmorona ante la primera formulación no estándar del entrevistador.
Hace poco me topé con un curso abierto llamado Babua DSA Patterns en el repositorio team-codebug. El autor del proyecto, un desarrollador conocido como CTO Bhaiya (Anuj Kumar, quien ha trabajado en Adobe e Intuit), propone un enfoque diferente. En lugar de resolver cientos de problemas de forma caótica, estructuró toda la preparación en 90 días y la centró en 30 patrones centrales.
La esencia del enfoque basado en patrones
Una vez que empiezas a trabajar con problemas por docenas, notas una cosa. Nueve de cada diez preguntas de entrevista se reducen a un conjunto limitado de técnicas.
Por ejemplo, si necesitas encontrar una subcadena con una condición específica o un par de elementos en un array ordenado, casi seguro que necesitas dos punteros o una ventana deslizante. Una vez que entiendes la mecánica de un patrón, el enunciado específico de un problema deja de ser intimidante. Dejas de buscar una solución única y simplemente adaptas un esqueleto de código familiar.
En el repositorio, el autor construye exactamente este sistema de coordenadas:
- Cada patrón se explica desde el punto de vista de la intuición, no de la teoría seca
- Cada plantilla viene con 15–20 problemas de práctica de dificultad creciente
- Hay notas listas para usar y guías de análisis de casos límite
- Se incluyen tablas de repetición espaciada
Cómo está organizado el repositorio y el plan de estudio
El repositorio sirve como rastreador interactivo para un desafío de 90 días. El proceso de aprendizaje en sí está dividido por día. Cada día se dedica ya sea a explorar un nuevo concepto o a practicar problemas sobre un tema ya cubierto.
La estructura de directorios es directa: cada día obtiene su propia carpeta (0_Day, 1_Day, 2_Day, y así sucesivamente), conteniendo notas, explicaciones de código y enlaces a videos.
El autor acompaña los temas con diagramas visuales:
Entre los patrones cubiertos se encuentran temas básicos y avanzados:
- Two Pointers (punteros clásicos para arrays y cadenas)
- Fast & Slow Pointers (técnica de la liebre y la tortuga para estructuras cíclicas y listas enlazadas)
- Sliding Window (ventana deslizante de tamaño fijo y dinámico)
- Inversiones de listas enlazadas in-place
- Búsqueda de K elementos mediante heaps
- Búsqueda binaria modificada
Ejemplo: de la idea a la plantilla de dos punteros
Para entender cómo se construye la lógica, tomemos el patrón de Two Pointers. Muchos problemas de arrays se pueden resolver directamente en O(n²) usando bucles anidados. Usar punteros que se mueven uno hacia el otro o en la misma dirección reduce la complejidad a O(n).
Así es cómo se ve el esqueleto de este enfoque en Java:
public int[] twoSumSorted(int[] numbers, int target) {
int left = 0;
int right = numbers.length - 1;
while (left < right) {
int currentSum = numbers[left] + numbers[right];
if (currentSum == target) {
return new int[] { left + 1, right + 1 };
} else if (currentSum < target) {
left++; // сдвигаем левый указатель вправо, увеличивая сумму
} else {
right--; // сдвигаем правый указатель влево, уменьшая сумму
}
}
return new int[] {};
}
En el curso, el autor muestra cómo esta misma plantilla con modificaciones mínimas se aplica a la verificación de palíndromos, el problema 3Sum o encontrar el contenedor con más agua. En lugar de mantener cinco soluciones diferentes en tu cabeza, mantienes un patrón y las reglas para el movimiento de los punteros.
Repetición espaciada y seguimiento
Uno de los problemas comunes al prepararse para entrevistas es olvidar. Podrías trabajar con árboles de segmentos en marzo, y para mayo borrar completamente los detalles del recorrido de la memoria.
El proyecto tiene una tabla de revisión separada (Revision Sheet) para esto. El autor recomienda la regla de las cuatro veces para repetir cada tema con intervalos crecientes. Para seguir el progreso, se te anima a hacer un fork del repositorio y marcar los días completados directamente en tu propio perfil.
La mancha en el lienzo: matices que vale la pena conocer
Antes de lanzarte al maratón de 90 días, presta atención al formato de los materiales:
- El idioma principal de las lecciones en video de YouTube es una mezcla de hindi e inglés (Hinglish). Si solo absorbes información en ruso puro o inglés académico, ver los videos será algo difícil.
- El código y las notas de texto en el repositorio están escritos en Java e inglés, así que puedes leer las notas sin ningún problema incluso sin los videos.
- El proyecto está enfocado en resultados prácticos de entrevistas, así que no hay pruebas académicas profundas de asintóticas aquí.
Para quién es útil este repositorio
Si te estás preparando para un cambio de trabajo, planeas pasar por entrevistas técnicas en grandes tecnológicas, o simplemente quieres poner orden en tu base de conocimientos algorítmicos, el repositorio babua-dsa-patterns-course es una excelente opción como marco de trabajo.
No tienes que seguir el calendario de 90 días día a día. Es suficiente con tomar la lista de 30 patrones, revisar las carpetas correspondientes en el repositorio para los desgloses de problemas y resolver un conjunto en LeetCode en tu lenguaje de trabajo principal. Este enfoque sistemático ahorra semanas de vagar caóticamente por archivos de problemas.
Proyectos relacionados