Los temas que más salen en entrevistas, ordenados por rentabilidad: primero lo que más aparece y menos cuesta aprender. Cada tema incluye la idea, cómo reconocerlo, una animación paso a paso, código en Python 3 y TypeScript, errores típicos y 9 problemas gratuitos para practicar. Avanza de tier cuando resuelvas los Medium del anterior sin mirar la solución.
| Tamaño máximo de n | Complejidad que cabe | Patrones candidatos |
|---|---|---|
| n ≤ 10 | O(n!) | Backtracking (permutaciones) |
| n ≤ 20 | O(2ⁿ) | Backtracking, bitmask |
| n ≤ 500 | O(n³) | DP 2D con un bucle extra |
| n ≤ 5.000 | O(n²) | DP 2D, DP 1D con bucle interno, todos los pares |
| n ≤ 10⁶ | O(n log n) u O(n) | Hash, two pointers, sliding window, prefix sum, heap, monotonic deque, ordenar |
| n ≥ 10⁹ | O(log n) u O(1) | Binary search sobre la respuesta, bits, matemáticas |
Regla práctica: un juez de LeetCode hace unos 10⁸ pasos simples por segundo. Calcula cuántos pasos da tu idea con el n máximo antes de programar.
| Si el enunciado dice… | Piensa en |
|---|---|
| «sorted», «O(log n)» | Binary search, two pointers |
| «contiguous subarray», «substring», «longest / shortest» | Sliding window, prefix sum |
| «pair», «duplicate», «anagram», «frequency» | Hash map / set |
| «all combinations / permutations / subsets» | Backtracking |
| «number of ways», «minimum cost», «maximum profit» | DP 1D, DP 2D |
| «k largest», «kth», «top k», «median» | Heap |
| «parentheses», «next greater», «nested» | Stack |
| «grid», «islands», «minimum steps» | BFS / DFS |
| «weighted», «cheapest», «network delay» | Dijkstra |
| «prerequisites», «dependencies», «order» | Topological sort |
| «connected», «groups», «redundant edge» | Union-Find, DFS |
| «intervals», «meetings», «overlap» | Intervals y greedy |
| «prefix», «starts with», «autocomplete» | Trie |
| «appears once», «XOR», «constant space» | Bit manipulation |
| «linked list», «cycle», «middle» | Linked list (fast/slow) |
| «design», «implement a class», «LRU», «O(1) per operation» | Diseño de estructuras |
| «jump», «minimum number of», «can you reach», «choose locally» | Greedy |
| «sliding window maximum / minimum», «subarray sum at least K» | Monotonic deque |
| «find pattern», «repeated substring», «occurrence of string» | KMP / rolling hash |
| «update» + «range query» | Segment tree / Fenwick |