Algoritmos y estructuras de datos, en español
Plan de estudios organizado por patrones. Lecciones que explican por qué funciona cada algoritmo y problemas que resuelves en un editor que corre dentro del navegador.
Los cuatro primeros temas se leen sin registrarte.
Por qué Brújula Codifica
Lo que hace este sitio distinto de un curso genérico o de practicar problemas sueltos en LeetCode.
Plan de estudios por patrones
Cada tema cubre un patrón concreto. Aprendes el patrón y después practicas con problemas que lo aplican. Cuando dominas los patrones principales, la mayoría de problemas de entrevista te resultan familiares.
Editor en el navegador
Python y JavaScript se ejecutan directamente en tu pestaña, sin instalar nada. Cada problema viene con casos de prueba reales, así que sabes al momento si tu solución funciona.
Material en español
Las explicaciones, los ejemplos y los enunciados están escritos en español desde cero, sin traducciones literales del inglés, pensando en entrevistas de empresas de LATAM, España y Estados Unidos.
Énfasis en la intuición
Antes de mostrar la solución te explicamos por qué funciona. Si memorizas el código sin entender la idea, el próximo problema del mismo tipo te vuelve a bloquear.
Tu ruta de aprendizaje
24 temas, de complejidad a diseño de estructuras. Los cuatro primeros son gratis.
- Etapa 1
Introducción
Cómo usar el curso, cómo estudiar, qué pasa en una entrevista y la tabla de equivalencias Python/JavaScript. Léelo antes de empezar con los temas.
Explorar - Etapa 2
Complejidad
Big O, master theorem, trade-offs tiempo vs espacio. La base para razonar sobre cualquier algoritmo del curso. Cierra con una lección complementaria sobre análisis amortizado.
Explorar - Etapa 3
Arrays y Strings
Las estructuras base. Operaciones in-place, slicing eficiente, mutabilidad de strings y arrays dinámicos por dentro.
Explorar - Etapa 4
Búsqueda Binaria
Encuentra elementos en datos ordenados en tiempo logarítmico. Aparece en cientos de problemas de entrevista y dentro de muchas estructuras de datos comunes.
Explorar - Etapa 5
Dos Punteros
Recorre arrays y listas con dos índices que cooperan. Convierte soluciones O(n²) en O(n) en muchos problemas sobre arrays.
Explorar - Etapa 6
Ventana Deslizante
Procesa subarrays contiguos con una ventana que crece y se encoge según una condición. Convierte muchos problemas de subarrays y substrings en O(n).
Explorar - Etapa 7
Sumas de Prefijo
Precalcula una vez y responde cualquier consulta de rango con una resta. Incluye prefijos en 2D, difference array y la combinación con hashmap que resuelve la familia de subarrays con suma objetivo.
Explorar - Etapa 8
Recursión
El cimiento de árboles, grafos, backtracking y programación dinámica. Aprende a pensar recursivamente sin perderte y a manejar la pila de llamadas.
Explorar - Etapa 9
Ordenamiento
Algoritmos clásicos (merge, quick), no comparativos (counting, radix) y el patrón 'ordenar primero' que aparece en cientos de problemas.
Explorar - Etapa 10
Intervalos
Ordenar por inicio y barrer una vez resuelve fusionar, insertar y detectar solapamientos. Line sweep responde cuántos rangos están activos a la vez.
Explorar - Etapa 11
Hash Maps y Sets
Diccionarios y conjuntos para buscar, contar y agrupar en tiempo constante. Base de la mayoría de problemas de frecuencias y duplicados.
Explorar - Etapa 12
Listas Enlazadas
Singly, doubly, circular. El patrón centinela y la detección de ciclos con tortuga y liebre.
Explorar - Etapa 13
Pilas y Colas
LIFO, FIFO y monotonic stack. Paréntesis balanceados, evaluación de expresiones, next greater element y sliding window maximum.
Explorar - Etapa 14
Heap y Cola de Prioridad
Mantiene el mínimo o máximo en tiempo O(log n). Usado en top-k, fusiones de listas ordenadas, Dijkstra y planificación.
Explorar - Etapa 15
Árboles Binarios
Recorridos, tipos de árbol (BST, balanceados, completos), métricas (altura, profundidad, diámetro) y serialización.
Explorar - Etapa 16
Búsqueda en Anchura (BFS)
Explora árboles y grafos nivel por nivel. La herramienta natural para caminos mínimos en grafos sin pesos y para problemas sobre matrices.
Explorar - Etapa 17
Búsqueda en Profundidad (DFS)
Recorrido en profundidad sobre árboles y grafos. Base de backtracking, detección de ciclos y problemas de componentes conexos.
Explorar - Etapa 18
Grafos
Representaciones, componentes conexos, caminos mínimos (Dijkstra, Bellman-Ford, Floyd-Warshall), orden topológico y Union-Find.
Explorar - Etapa 19
Backtracking
Identificar problemas, la plantilla choose/explore/unchoose y técnicas de pruning para que la búsqueda exponencial sea manejable.
Explorar - Etapa 20
Programación Dinámica
Identificar problemas DP, memoización top-down, tabulación bottom-up, optimización de espacio y DP sobre strings.
Explorar - Etapa 21
Greedy
Decisión óptima local en cada paso. Funciona cuando el problema tiene subestructura óptima clara y propiedad de elección greedy.
Explorar - Etapa 22
Trie
Árbol especializado para buscar prefijos y palabras. La estructura detrás de autocomplete, corrector ortográfico y búsqueda predictiva.
Explorar - Etapa 23
Bit y Matemática
Operadores de bits, manipulación de números, máximo común divisor y trucos numéricos comunes en entrevistas.
Explorar - Etapa 24
Diseño de Estructuras
Cómo combinar dos o más estructuras de datos para resolver problemas que ninguna resuelve sola. LRU Cache, MinStack y variantes.
Explorar
Empieza por el primer tema
El primer tema explica cómo usar el curso y cómo estudiar. Los cuatro primeros temas son gratis, sin registro.