Esta es una pregunta general que un novato a menudo enfrenta cuando ingresa al campo de la programación. Trataré de mantener mi respuesta lo más elaborada y comprensible posible.
Esta lista consta de estructuras de datos y algoritmos en orden creciente de dificultad. He agregado lo que actualmente puedo recordar. Lo actualizará si es necesario. He proporcionado enlaces para recursos de aprendizaje.
- Complejidad del tiempo (análisis asintótico): para comprender las implementaciones de estructuras de datos y algoritmos, los diversos trucos involucrados y un mejor análisis del rendimiento de los algoritmos es una buena comprensión del análisis asintótico. Enlaces: mycodeschool, Algorithms – GeeksforGeeks (Lea el análisis de algoritmos)
- Arreglos: mycodeschool, Estructura de datos de matriz – GeeksforGeeks, Tutorial de estructura de datos: Matriz
- Strings: Estructura de datos de cadena – GeeksforGeeks, C ++ Strings, Java String Tutorial
- Retroceso y recursividad: mycodeschool, Introducción a la recursión, Parte 1, Introducción a la recursión: Parte 2, Recursión – GeeksforGeeks, Algoritmos – GeeksforGeeks
- Clasificación: mycodeschool, Algoritmos – GeeksforGeeks, Khan Academy
- Teoría de números: teoría de números para programación competitiva – GeeksforGeeks, teoría básica de números-1 Tutoriales y notas | Matemáticas | HackerEarth, Basic Number Theory-2 Tutoriales y notas | Matemáticas | HackerEarth, Teoría de los números – III – Boris Sokolov
- Divide y vencerás: Algoritmos – GeeksforGeeks
- Búsqueda lineal y búsqueda binaria: mycodeschool, Algorithms – GeeksforGeeks, Binary Search – topcoder
- Listas vinculadas: Estructura de datos de la lista vinculada – GeeksforGeeks, mycodeschool
- Pilas: mycodeschool, Estructura de datos de pila – GeeksforGeeks
- Colas: mycodeschool, Estructura de datos de cola – GeeksforGeeks
- Árbol binario: mycodeschool, Estructura de datos del árbol binario – GeeksforGeeks
- Árbol de búsqueda binaria: mycodeschool, Estructura de datos del árbol de búsqueda binaria – GeeksforGeeks
- Montones: mycodeschool, estructura de datos del montón – GeeksforGeeks
- Hashing: mycodeschool, estructura de datos de hash – GeeksforGeeks
- Unión de conjuntos disjuntos: estructuras de datos de conjuntos disjuntos, https://www.hackerearth.com/prac…,
- Gráficos: mycodeschool, estructura de datos gráficos y algoritmos – GeeksforGeeks
- Árboles de segmento: consulta mínima de rango y ancestro común más bajo, un enfoque simple para segmentar árboles
- Trie: Uso de Tries – topcoder, Trie (Árbol de palabras clave) Tutoriales y notas | Estructuras de datos | HackerEarth
- Manipulación de bits: Algoritmos – GeeksforGeeks, un poco de diversión: diversión con bits
- Algoritmos codiciosos: mycodeschool, conceptos básicos de algoritmos codiciosos Tutoriales y notas | Algoritmos | HackerEarth, Algoritmos – GeeksforGeeks
- Programación dinámica: mycodeschool, Algoritmos – GeeksforGeeks, Introducción a la programación dinámica 1 Tutoriales y notas | Algoritmos | HackerEarth, desmitificando la programación dinámica – freeCodeCamp, programación dinámica – de principiante a avanzado
- Árbol indexado binario (BIT): árboles indexados binarios, archivos de árbol indexado binario – GeeksforGeeks, Fenwick (indexado binario) Tutoriales y notas | Estructuras de datos | HackerEarth, implementación de C ++ de estructura de datos BIT / Fenwick Tree
- Algoritmos de búsqueda de patrones: Conceptos básicos de manipulación de cadenas Tutoriales y notas | Algoritmos | HackerEarth
- Matriz de sufijos y árbol de sufijos: estructuras de datos avanzadas – GeeksforGeeks, Tutoriales y notas sobre matrices de sufijos | Estructuras de datos | HackerEarth, Suffix Trees Tutoriales y notas | Estructuras de datos | HackerEarth
Solo leer tutoriales nunca te ayudará a largo plazo. Practicar tantas preguntas como sea posible es imprescindible. Al principio, puede intentar preguntas de nivel más fáciles en hackerearth y hackerrank. Posteriormente, puede proceder a resolver problemas en este enlace: Juez de Esfera en línea (SPOJ). Resolver problemas en orden creciente de número de usuarios. Si encuentra que el nivel del problema es demasiado ingenuo, omita algunos problemas. No es necesario resolver todos los problemas hasta ya menos que esté aprendiendo.
- Cómo implementar el algoritmo
- Cómo resolver la recurrencia t (n) = 2t (n / 2) + n / logn
- ¿Cuáles son algunos proyectos que podrían realizarse utilizando estructuras de datos?
- Cómo equilibrar el tiempo entre el desarrollo web de aprendizaje (JavaScript) y las estructuras de datos de algoritmos
- Inventé un algoritmo de búsqueda de cadenas. ¿Cómo hago para asegurarme de que lleva mi nombre? ¿Es posible patentarlo / copyright o alguna otra cosa? ¿Se pueden proteger los algoritmos?
Recientemente codechef ha comenzado el programa de certificación en DS y algo. Hay muchos buenos recursos mencionados allí también. Enlace: Prepararse | CodeChef
¡¡Todo lo mejor!!