Este repositorio contiene una colección de problemas de programación y estructuras de datos implementados en Python. Cada archivo aborda un problema específico o implementa una estructura de datos, con soluciones optimizadas y explicaciones claras en los comentarios del código.
Los problemas están organizados en carpetas según su categoría. Cada archivo problem_X.py contiene la descripción del problema, su solución y ejemplos de uso. Algunos de los problemas destacados incluyen:
- Dinamica/problem_1.py: Verifica si dos números de una lista suman un valor objetivo.
- Arboles/problem_3.py: Serialización y deserialización de árboles binarios.
- Dinamica/problem_7.py: Cuenta las formas de decodificar un mensaje numérico.
- Dinamica/problem_9.py: Encuentra la suma más grande de números no adyacentes en una lista.
- Randomizados/problem_14.py: Estimación de π utilizando el método de Monte Carlo.
En la carpeta Estructuras/ se encuentran implementaciones de estructuras de datos avanzadas:
- arbol_binario_busqueda_aleatoria.py: Árbol binario de búsqueda aleatoria.
- skip_lists.py: Implementación de listas skip.
- treaps.py: Árboles binarios balanceados con prioridades aleatorias (Treaps).
En la carpeta Randomizados/ se encuentran algoritmos que utilizan técnicas de randomización:
- quicksort.py: Implementación de QuickSort con selección de pivote mejorada.
- random_mediana.py: Selección de la mediana utilizando randomización.
En la carpeta Concurrencia/ se encuentran problemas relacionados con programación concurrente:
- problem_10.py: Implementación de un programador de tareas con retraso.
En la carpeta Hashing/ se encuentran problemas relacionados con técnicas de hashing:
- problem_4.py: Encuentra el primer entero positivo faltante en un arreglo.
En la carpeta Leetcode/ se encuentran problemas organizados por dificultad:
- Medium/Using_a_Robot_to_Print_the_Lexicographically_Smallest_String.py: Utiliza un robot para imprimir la cadena lexicográficamente más pequeña.
Cada archivo es independiente y puede ejecutarse directamente con Python. Por ejemplo: