No estoy seguro de si está buscando una plataforma donde pueda compilar y ejecutar su código en línea. Algo como HackerRank o topcoder puede ser.
Aunque ambos recursos anteriores son increíbles para practicar algoritmos, la mejor manera que sugeriría para practicar DS y también es configurar su propio entorno de desarrollo en su máquina local. Incluso antes de eso, elige un lenguaje de programación. Personalmente, sugiero Java, ya que es más simple y puedes aprenderlo relativamente rápido sin tener que poner tu energía detrás de aprender el lenguaje en sí mismo: comprender los punteros / direcciones de C ++, etc. podría tomar más tiempo. Más adelante puede hacer lo mismo en C ++.
Una vez que tenga esta configuración, comience a ver cómo estas estructuras de datos se ponen en una forma concreta (clases / objetos, etc.) utilizando los siguientes recursos. (¡No es una lista exhaustiva en absoluto!)
- ¿Cuáles son los algoritmos que se pueden usar en aplicaciones web del mundo real además de ordenar o buscar?
- ¿Cuál es el algoritmo utilizado por Diffbot para extraer datos web?
- ¿Hay alguna manera de extraer la palabra principal de una lista de sinónimos que representa la lista?
- ¿Cómo pruebo que no existen estados recurrentes nulos en un estado finito DTMC (cadena de Markov de tiempo discreto)?
- ¿Qué se entiende por 'profundidad' en DFS?
- Algoritmos, 4ta Edición
- Estructuras de datos abiertos (en Java)
- Estructuras de datos y análisis de algoritmos
- GeeksforGeeks | Un portal informático para geeks
- Videos simples y problemas de práctica para aprender programación
Comprende y escríbelo tú mismo. Creo que está bien mirar las implementaciones y escribirlas: “cuando las estás haciendo por primera vez y mientras las entiendas” . Una vez que comprenda cómo funcionan las cosas, es más probable que presente sus propias modificaciones a esas implementaciones. Los libros anteriores tienen mucho código. No es necesario que haya un solo libro en el que comprenda claramente las implementaciones para todas las estructuras de datos. ¡Para eso puedes saltar a otro recurso!
Además, mantengo un repositorio de Github donde sigo escribiendo estructuras / algoritmos de datos a medida que los aprendo. Siéntase libre de echar un vistazo si eso es algo en lo que estaría interesado. ¡Las implementaciones son bastante simples y podrían ser algo de lo que pueda beneficiarse!
Enlace: nkher / lib-java
Feliz aprendizaje !