Comprender las estructuras de datos y los algoritmos es esencial para resolver problemas complejos de manera eficiente y es una habilidad clave para cualquier desarrollador de software. Este repositorio describe mi hoja de ruta para dominar estos conceptos, incluyendo los temas que planeo cubrir y los recursos que utilizaré.
- Habilidades de Resolución de Problemas: Mejora tu capacidad para resolver problemas de manera eficiente.
- Entrevistas tecnicas: Esencial para entrevistas técnicas en empresas tecnológicas de primer nivel.
- Optimización: Ayuda a optimizar el código para un mejor rendimiento.
- Conocimiento Fundamental: Proporciona una comprensión profunda de cómo funcionan los datos y los procesos.
- Introducción a los Algoritmos
- Ordenamiento elemental
- Ordenamiento avanzado
- Ordenamiento de burbuja
- Merge Sort
- Quick Sort
- Búsqueda binaria
- Tipos concretos
- Tipos abstractos
- Listas enlazadas
- Pilas
- Colas
- Arboles binarios de busqueda
- Algoritmos voraces
- Recorrida de grafos
- Backtracing
- Programación dinámica
- Retos de LeetCode (https://leetcode.com)
- Concursos de Codeforces
- Práctica en HackerRank (https://hackerrank.com)
- GeeksforGeeks (https://geeksforgeeks.org)
- Proyecto 1: Implementar una biblioteca básica de estructuras de datos en tu lenguaje de programación preferido.
- Proyecto 2: Crear un visualizador para algoritmos de ordenamiento.
- Proyecto 3: Desarrollar una aplicación web simple que utilice algoritmos de grafos para encontrar rutas.