Coleccion de problemas de programacion en Python, organizada por patrones de resolucion. Cada problema combina una explicacion breve, pistas de enfoque y un archivo ejecutable con asserts simples.
El objetivo es practicar con problemas chicos pero densos: estructuras de datos, recursion, ventanas deslizantes, grafos, programacion dinamica, parsing y razonamiento probabilistico.
- Elegi un tema en la tabla de temas.
- Abri el
.mddel problema para leer el enunciado, la intuicion y las pistas. - Intentá resolverlo en el
.py. - Ejecutá el archivo para correr los asserts.
problems/<tema>/<numero>_<slug>.md: explicacion, intuicion, pistas y complejidad.problems/<tema>/<numero>_<slug>.py: implementacion o archivo de trabajo.- Los asserts al final de cada archivo sirven como verificacion rapida.
- Los problemas en progreso pueden tener
passhasta que la solucion este lista.
| Tema | Problemas | Enfoque |
|---|---|---|
| Arrays y hashing | 7 | Arreglos, hashing, ventanas e intervalos |
| Strings y parsing | 9 | Strings, parsing, prefijos y expresiones |
| Arboles y grafos | 4 | Arboles, grafos, grillas y recorridos |
| Programacion dinamica | 3 | Recurrencias y optimizacion |
| Estructuras de datos | 4 | Listas, pares y estructuras especificas |
| Probabilidad y aleatoriedad | 2 | Muestreo y algoritmos probabilisticos |
| Sistemas y concurrencia | 1 | Scheduling, timers y concurrencia |
- Sliding Window Maximum: cola doble para mantener maximos en ventanas.
- Locking Binary Tree: estado agregado para bajar operaciones de
O(m + h)aO(h). - Regular Expression Matching: recursion con memoizacion sobre string y patron.
- Balanced Brackets: pila para validar cierres correctamente anidados.
| # | Problema | Tema | Estado |
|---|---|---|---|
| 001 | Two Sum | Arrays y hashing | Resuelto |
| 002 | Product Array | Arrays y hashing | Resuelto |
| 003 | Serialize and Deserialize Tree | Arboles y grafos | Resuelto |
| 004 | First Missing Positive | Arrays y hashing | Resuelto |
| 005 | Cons, Car and Cdr | Estructuras de datos | Resuelto |
| 006 | XOR Linked List | Estructuras de datos | Resuelto |
| 007 | Decode Ways | Strings y parsing | Resuelto |
| 008 | Unival Tree Count | Arboles y grafos | Resuelto |
| 009 | Max Non-Adjacent Sum | Programacion dinamica | Resuelto |
| 010 | Job Scheduler | Sistemas y concurrencia | Resuelto |
| 011 | Autocomplete | Strings y parsing | Resuelto |
| 012 | Staircase | Programacion dinamica | Resuelto |
| 013 | Longest Substring With K Distinct | Strings y parsing | Resuelto |
| 014 | Estimate Pi | Probabilidad y aleatoriedad | Resuelto |
| 015 | Reservoir Sampling | Probabilidad y aleatoriedad | Resuelto |
| 016 | Order Log | Arrays y hashing | Resuelto |
| 017 | Longest File Path | Strings y parsing | Resuelto |
| 018 | Sliding Window Maximum | Arrays y hashing | Resuelto |
| 019 | Paint House | Programacion dinamica | Resuelto |
| 020 | Linked List Intersection | Estructuras de datos | Resuelto |
| 021 | Meeting Rooms | Arrays y hashing | Resuelto |
| 022 | Word Break | Strings y parsing | Resuelto |
| 023 | Shortest Path Grid | Arboles y grafos | Resuelto |
| 024 | Locking Binary Tree | Arboles y grafos | Resuelto |
| 025 | Regular Expression Matching | Strings y parsing | Resuelto |
| 026 | Remove Kth Last Linked List Node | Estructuras de datos | Resuelto |
| 027 | Balanced Brackets | Strings y parsing | Resuelto |
| 028 | Text Justification | Strings y parsing | Resuelto |
| 029 | Run-Length Encoding | Strings y parsing | Resuelto |
| 030 | Trapping Rain Water | Arrays y hashing | Resuelto |