El mundo de hoy es altamente confiable en cuanto a los datos y su gestión adecuada a través de aplicaciones y software ampliamente utilizados. La columna vertebral para una gestión adecuada de los datos es la estructura de datos y los algoritmos (por comodidad, aquí utilizaremos el término DSA). Para muchos es un sueño adquirir experiencia en el manejo y la creación de estas aplicaciones y software. Con este objetivo en mente, emprendieron el viaje de aprendizaje de DSA. El primer paso en el viaje es la creación de una hoja de ruta completa para aprender la estructura de datos y los algoritmos.
Aquí, en este artículo, intentaremos facilitarle esa tarea. Proporcionaremos aquí una hoja de ruta completa para aprender la estructura de datos y los algoritmos para cualquier persona interesada en aprender DSA, desde cero.
Índice/hoja de ruta
- 5 pasos para aprender DSA desde cero
- Aprende al menos un lenguaje de programación
- Más información sobre las complejidades
- Aprenda estructura de datos y algoritmos
- 1) array
- 2) Cuerda
- 3) Lista vinculada
- 4) Algoritmo de búsqueda
- 5) Algoritmo de clasificación
- 6) Algoritmo divide y vencerás
- 7) Apilar
- 8) Cola
- 9) Estructura de datos de árbol
- 10) Estructura de datos del gráfico
- 11) Metodología codiciosa
- 12) recursividad
- 13) Algoritmo de retroceso
- 14) Programación Dinámica
- Practica, practica y practica mas
- Compite y conviértete en un profesional
- Consejos para potenciar tu aprendizaje
- Conclusión
Desde la creación de juegos hasta la construcción de algoritmos de redes sociales . DSA juega un papel integral, ya sea que desee construir algo propio o esté dispuesto a conseguir un trabajo en grandes gigantes tecnológicos como Google, Microsoft, Netflix y más. ¡Esta vez, aprenda DSA con nosotros, con nuestro curso DSA más popular , en el que confían más de 75,000 estudiantes! Diseñado por expertos líderes con años de experiencia en la industria, lo que le brinda un paquete completo de conferencias en video, problemas de práctica, cuestionarios y concursos. ¡Empezar!
5 pasos para aprender DSA desde cero
Lo primero y más importante es dividir el procedimiento total en pequeñas partes que deben realizarse secuencialmente.
El proceso completo para aprender DSA desde cero se puede dividir en 5 partes:
- Aprende un lenguaje de programación de tu elección
- Aprenda sobre las complejidades del tiempo y el espacio
- Aprenda los conceptos básicos de estructuras de datos y algoritmos individuales
- Practica, practica y practica más
- Compite y conviértete en un profesional
Antes de iniciar cualquier estructura de datos o algoritmo, es necesario conocer los medios para expresarlo o implementarlo. Entonces, la primera tarea es aprender cualquier lenguaje de programación. Entonces deberías aprender sobre uno de los conceptos más importantes y más utilizados sobre DSA, la complejidad de un programa. Ahora equipado con los requisitos previos, puede comenzar a aprender DSA y, al mismo tiempo, practicarlo regularmente y competir en desafíos para medir y mejorar su habilidad. En las siguientes secciones, discutiremos cada uno de los pasos en detalle.
1. Aprende al menos un lenguaje de programación
Este debería ser su primer paso al comenzar a aprender la estructura de datos y los algoritmos. Nosotros como seres humanos, antes de aprender a escribir una oración o un ensayo sobre un tema, primero tratamos de aprender ese idioma: el alfabeto, las letras y los signos de puntuación en él, cómo y cuándo usarlos. Lo mismo ocurre con la programación también.
En primer lugar, seleccione un idioma de su elección , ya sea Java, C, C++, Python o cualquier otro idioma de su elección. Antes de aprender a codificar en ese lenguaje, debe aprender sobre las piezas de construcción del lenguaje: la sintaxis básica, los tipos de datos, variables, operadores, declaraciones condicionales, bucles, funciones, etc. También puede aprender el concepto de programación orientada a objetos (Object Programación Orientada) .
Para ayudarte a comenzar con el idioma de tu elección, hemos creado un curso completo para comenzar como principiante, como:
- Programación en C (Básico a Avanzado) – A su propio ritmo
- Programación bifurcada de CPP: a su propio ritmo
- Programación Fork Java: a su propio ritmo
- Programación de Fork Python: a su propio ritmo
- Fork Javascript – A su propio ritmo
También puede explorar nuestros otros cursos para lenguajes de programación en nuestro portal de práctica.
2. Aprende sobre las complejidades
Aquí viene uno de los temas interesantes e importantes. El motivo principal para usar DSA es resolver un problema de manera efectiva y eficiente. ¿Cómo puedes decidir si un programa escrito por ti es eficiente o no? Esto se mide por complejidades. La complejidad es de dos tipos:
- Complejidad del tiempo : la complejidad del tiempo se utiliza para medir la cantidad de tiempo necesario para ejecutar el código.
- Complejidad espacial : la complejidad espacial significa la cantidad de espacio requerido para ejecutar con éxito las funcionalidades del código.
También encontrará el término Espacio auxiliar con mucha frecuencia en DSA, que se refiere al espacio adicional utilizado en el programa que no sea la estructura de datos de entrada.
Ambas complejidades anteriores se miden con respecto a los parámetros de entrada. Pero aquí surge un problema. El tiempo requerido para ejecutar un código depende de varios factores, tales como:
- El número de operaciones realizadas en el programa,
- La velocidad del dispositivo, y también
- La velocidad de transferencia de datos si se ejecuta en una plataforma en línea.
Entonces, ¿cómo podemos determinar cuál es eficiente? La respuesta es el uso de la notación asintótica.
La notación asintótica es una herramienta matemática que calcula el tiempo requerido en términos de tamaño de entrada y no requiere la ejecución del código.
Ignora las constantes dependientes del sistema y se relaciona solo con el número de operaciones modulares que se realizan en todo el programa. Las siguientes 3 notaciones asintóticas se utilizan principalmente para representar la complejidad temporal de los algoritmos:
- Notación Big-O (Ο) : la notación Big-O describe específicamente el peor de los casos.
- Notación Omega (Ω): la notación Omega (Ω) describe específicamente el mejor de los casos.
- Notación theta (θ) : esta notación representa la complejidad promedio de un algoritmo.
La notación más utilizada en el análisis de un código es la notación Big O , que proporciona un límite superior del tiempo de ejecución del código (o la cantidad de memoria utilizada en términos de tamaño de entrada).
Para obtener más información sobre el análisis de complejidad, puede consultar nuestro conjunto completo de artículos sobre el análisis de algoritmos .
3. Aprende estructuras de datos y algoritmos
Aquí viene la etapa más crucial y más esperada de la hoja de ruta para aprender la estructura de datos y el algoritmo: la etapa en la que comienza a aprender sobre DSA. El tema de DSA consta de dos partes:
- Estructuras de datos
- Algoritmos
Aunque son dos cosas diferentes, están muy interrelacionadas, y es muy importante seguir el camino correcto para aprenderlas de la manera más eficiente. Si no sabe cuál aprender primero, le recomendamos que consulte nuestro análisis detallado sobre el tema: ¿Qué debo aprender primero: estructuras de datos o algoritmos?
Aquí hemos seguido el flujo de aprendizaje de una estructura de datos y luego los algoritmos más importantes y relacionados utilizados por esa estructura de datos.
3.1. Formación
La estructura de datos más básica pero importante es la array. Es una estructura de datos lineal. Una array es una colección de tipos de datos homogéneos donde los elementos se asignan a la memoria contigua. Debido a la asignación contigua de memoria, se puede acceder a cualquier elemento de una array en tiempo constante. Cada elemento de la array tiene un número de índice correspondiente.
Para obtener más información sobre las arrays, consulte el artículo » Introducción a las arrays «.
Aquí hay algunos temas sobre la array que debe aprender:
- Rotación de array : la rotación de array significa cambiar los elementos de una array de forma circular, es decir, en el caso de un desplazamiento circular a la derecha, el último elemento se convierte en el primero y todos los demás elementos se mueven un punto a la derecha.
- Reorganización de una array : la reorganización de los elementos de la array sugiere el cambio de un orden inicial de elementos siguiendo algunas condiciones u operaciones.
- Consultas de rango en la array : a menudo necesita realizar operaciones en un rango de elementos. Estas funciones se conocen como consultas de rango.
- Array multidimensional : estas son arrays que tienen más de una dimensión. El más utilizado es el arreglo bidimensional, comúnmente conocido como array.
- Algoritmo de Kadane
- Algoritmo de bandera nacional holandesa
3.2. Cuerda
Una string también es un tipo de array. Se puede interpretar como una array de caracteres. Pero tiene algunas características especiales como que el último carácter de una string es un carácter nulo para indicar el final de la string. Además, hay algunas operaciones únicas, como la concatenación, que une dos strings en una.
Aquí le proporcionamos algunos conceptos de string que debe conocer:
- Subsecuencia y substring : una subsecuencia es una secuencia que se puede derivar de una string que elimina uno o más elementos. Una substring es un segmento contiguo de la string.
- Inversión y rotación en una string : la operación inversa es intercambiar la posición de los caracteres de una string de modo que el primero se convierte en el último, el segundo en el penúltimo, y así sucesivamente.
- String binaria : una string binaria es una string compuesta de solo dos tipos de caracteres.
- Palíndromo : una cuerda de palíndromo es una cuerda en la que los elementos a la misma distancia del centro de la cuerda son iguales.
- Patrón lexicográfico : el patrón lexicográfico es el patrón basado en el valor ASCII o se puede decir en el orden del diccionario.
- Búsqueda de patrones: la búsqueda de patrones consiste en buscar un patrón dado en la string. Es un tema avanzado de cuerda.
3.3. Lista enlazada
Al igual que las estructuras de datos anteriores, la lista enlazada también es una estructura de datos lineal. Pero Linked List es diferente de Array en su configuración. No se asigna a ubicaciones de memoria contiguas. En su lugar, cada Node de la lista enlazada se asigna a un espacio de memoria aleatorio y el Node anterior mantiene un puntero que apunta a este Node. Por lo tanto, no es posible el acceso directo a la memoria de ningún Node y también es dinámico, es decir, el tamaño de la lista enlazada se puede ajustar en cualquier momento. Para obtener más información sobre las listas vinculadas, consulte el artículo » Introducción a la lista vinculada «.
Los temas que debe querer cubrir son:
- Lista enlazada individualmente : en esto, cada Node de la lista enlazada apunta solo a su siguiente Node.
- Lista enlazada circular : este es el tipo de lista enlazada donde el último Node apunta al encabezado de la lista enlazada.
- Lista doblemente enlazada : en este caso, cada Node de la lista enlazada tiene dos punteros, uno apunta al siguiente Node y el otro apunta al Node anterior.
3.4. Algoritmo de búsqueda
Ahora hemos aprendido sobre algunas estructuras de datos lineales y es hora de aprender sobre algunos algoritmos básicos y más utilizados que se utilizan enormemente en este tipo de estructuras de datos. Uno de estos algoritmos es el algoritmo de búsqueda.
Los algoritmos de búsqueda se utilizan para encontrar un elemento específico en una array, string, lista vinculada o alguna otra estructura de datos.
Los algoritmos de búsqueda más comunes son:
- Búsqueda lineal : en este algoritmo de búsqueda, buscamos el elemento de forma iterativa de un extremo al otro.
- Búsqueda binaria : en este tipo de algoritmo de búsqueda, dividimos la estructura de datos en dos partes iguales e intentamos decidir en qué mitad necesitamos encontrar el elemento.
- Búsqueda ternaria : en este caso, la array se divide en tres partes y, en función de los valores en las posiciones de partición, decidimos el segmento donde necesitamos encontrar el elemento requerido.
Además de estos, hay otros algoritmos de búsqueda también como
3.5. Algoritmo de clasificación
Aquí hay otro algoritmo más utilizado. A menudo, necesitamos organizar u ordenar los datos según una condición específica. El algoritmo de clasificación es el que se utiliza en estos casos. Según las condiciones, podemos ordenar un conjunto de datos homogéneos en orden, como ordenar una array en orden creciente o decreciente.
El algoritmo de clasificación se utiliza para reorganizar una array dada o enumerar elementos de acuerdo con un operador de comparación en los elementos. El operador de comparación se utiliza para decidir el nuevo orden de los elementos en la estructura de datos respectiva.
Hay muchos tipos diferentes de algoritmos de clasificación. Algunos algoritmos ampliamente utilizados son:
- Ordenamiento de burbuja
- Clasificación de selección
- Tipo de inserción
- Ordenación rápida
- Ordenar por fusión
También hay varios otros algoritmos de clasificación y son beneficiosos en diferentes casos. Puede aprender sobre ellos y más en nuestro artículo dedicado a los algoritmos de clasificación .
3.6. Algoritmo divide y vencerás
Este es un algoritmo interesante e importante que debe aprender en su camino de programación. Como sugiere el nombre, divide el problema en partes, luego resuelve cada parte y luego vuelve a fusionar las subtareas resueltas para resolver el problema real.
Divide y vencerás es un paradigma algorítmico. Un algoritmo típico de Divide y vencerás resuelve un problema siguiendo los siguientes tres pasos.
- Dividir: dividir el problema dado en subproblemas del mismo tipo.
- Conquer: Resolver recursivamente estos subproblemas
- Combinar: combinar apropiadamente las respuestas
Esta es la técnica principal mencionada en los dos algoritmos de clasificación Merge Sort y Quick Sort que se mencionaron anteriormente. Para obtener más información sobre la técnica, los casos en los que se utiliza y su implementación y resolver algunos problemas interesantes, consulte el artículo dedicado Algoritmo divide y vencerás .
3.7. Pila
Ahora debe pasar a algunas estructuras de datos más complejas, como Stack y Queue.
Stack es una estructura de datos lineal que sigue un orden particular en el que se realizan las operaciones. El orden puede ser LIFO (Last In First Out) o FILO (First In Last Out) .
La razón por la que Stack se considera una estructura de datos compleja es que utiliza otras estructuras de datos para la implementación, como arrays, listas vinculadas, etc., según las características y características de la estructura de datos de Stack.
3.8. Cola
Otra estructura de datos que es similar a Stack, pero diferente en sus características, es Queue.
Una cola es una estructura lineal que sigue el enfoque de primero en entrar, primero en salir (FIFO) en sus operaciones individuales.
Una cola puede ser de diferentes tipos como
- Cola circular : en una cola circular, el último elemento está conectado al primer elemento de la cola.
- Cola de dos extremos (o conocida como deque) : una cola de dos extremos es un tipo especial de cola donde se pueden realizar operaciones desde ambos extremos de la cola.
- Cola de prioridad : es un tipo especial de cola donde los elementos se organizan según su prioridad. Un elemento de baja prioridad se elimina de la cola después de un elemento de alta prioridad.
3.9. Estructura de datos de árbol
Después de haber cubierto los conceptos básicos sobre la estructura de datos lineales , ahora es el momento de dar un paso adelante para aprender sobre las estructuras de datos no lineales. La primera estructura de datos no lineal que debe aprender es el árbol.
La estructura de datos del árbol es similar a un árbol que vemos en la naturaleza, pero está al revés. También tiene una raíz y hojas. La raíz es el primer Node del árbol y las hojas son las que se encuentran en el nivel más bajo. La característica especial de un árbol es que solo hay un camino para ir de cualquiera de sus Nodes a cualquier otro Node.
Según el número máximo de hijos de un Node del árbol, puede ser:
- Árbol binario : este es un tipo especial de árbol en el que cada Node puede tener un máximo de 2 hijos.
- Árbol ternario: este es un tipo especial de árbol en el que cada Node puede tener un máximo de 3 hijos.
- Árbol N-ario : en este tipo de árbol, un Node puede tener como máximo N hijos.
Según la configuración de los Nodes también existen varias clasificaciones. Algunos de ellos son:
- Árbol binario completo : en este tipo de árbol binario, todos los niveles están llenos, excepto quizás el último nivel. Pero los elementos del último nivel se llenan lo más a la izquierda posible.
- Árbol binario perfecto: un árbol binario perfecto tiene todos los niveles llenos
- Árbol de búsqueda binaria: un árbol de búsqueda binaria es un tipo especial de árbol binario en el que el Node más pequeño se coloca a la izquierda de un Node y un Node de mayor valor se coloca a la derecha de un Node.
- Árbol de búsqueda ternario : es similar a un árbol de búsqueda binario, excepto por el hecho de que aquí un elemento puede tener como máximo 3 hijos.
3.10. Estructura de datos del gráfico
Otra estructura de datos no lineal importante es el gráfico. Es similar a la estructura de datos de árbol, con la diferencia de que no hay un Node raíz o de hoja en particular, y se puede recorrer en cualquier orden.
Un gráfico es una estructura de datos no lineal que consta de un conjunto finito de vértices (o Nodes) y un conjunto de aristas que conectan un par de Nodes.
Cada borde muestra una conexión entre un par de Nodes. Esta estructura de datos ayuda a resolver muchos problemas de la vida real. Según la orientación de los bordes y los Nodes, existen varios tipos de gráficos.
Aquí hay algunos conceptos imprescindibles de los gráficos:
- Tipos de gráficos : existen diferentes tipos de gráficos según la conectividad o el peso de los Nodes.
- Introducción a BFS y DFS : estos son los algoritmos para atravesar un gráfico
- Ciclos en un gráfico : los ciclos son una serie de conexiones después de las cuales nos moveremos en un bucle.
- Clasificación topológica en el gráfico
- Árbol de expansión mínimo en el gráfico
3.11. Metodología codiciosa
Como sugiere el nombre, este algoritmo construye la solución pieza por pieza y elige la siguiente pieza que ofrece el beneficio más obvio e inmediato, es decir, cuál es la opción más óptima en ese momento. Por lo tanto, los problemas en los que elegir lo óptimo localmente también conduce a soluciones globales son los más adecuados para Greedy.
Por ejemplo, considere el problema de la mochila fraccional . La estrategia óptima local es elegir el artículo que tiene la relación valor máximo vs peso. Esta estrategia también conduce a una solución globalmente óptima porque se nos permite tomar fracciones de un artículo.
Así es como puede comenzar con el algoritmo Greedy con la ayuda de subtemas relevantes:
- Algoritmos codiciosos estándar
- Algoritmos codiciosos en grafos
- Algoritmos codiciosos en sistemas operativos
- Algoritmos codiciosos en array
- Algoritmos codiciosos aproximados para problemas NP-completos
3.12. recursividad
La recursividad es uno de los algoritmos más importantes que utiliza el concepto de reutilización de código y el uso repetido de la misma pieza de código.
El punto que hace de Recursion uno de los algoritmos más utilizados es que forma la base para muchos otros algoritmos como:
En Recursion, puede seguir los siguientes artículos/enlaces para aprovecharlo al máximo:
3.13. Algoritmo de retroceso
Como se mencionó anteriormente, el algoritmo Backtracking se deriva del algoritmo Recursion, con la opción de revertir si falla una solución recursiva, es decir, en caso de que falle una solución, el programa retrocede hasta el momento en que falló y se basa en otra solución. Básicamente, prueba todas las soluciones posibles y encuentra la correcta.
Backtracking es una técnica algorítmica para resolver problemas recursivamente al intentar construir una solución de forma incremental, una pieza a la vez, eliminando aquellas soluciones que no satisfacen las restricciones del problema en cualquier momento.
Algunos problemas importantes y más comunes de los algoritmos de retroceso, que debe resolver antes de seguir adelante, son:
- Problema de la gira del caballero
- Rata en un laberinto
- Problema de N-Queen
- Problema de suma de subconjuntos
- problema de coloración m
- ciclo hamiltoniano
- Sudoku
3.14. Programación dinámica
Otro algoritmo crucial es la programación dinámica. La programación dinámica es principalmente una optimización sobre la recursividad simple. Dondequiera que veamos una solución recursiva que tiene llamadas repetidas para las mismas entradas, podemos optimizarla usando Programación Dinámica.
El concepto principal del algoritmo de programación dinámica es utilizar el resultado calculado previamente para evitar cálculos repetidos de la misma subtarea, lo que ayuda a reducir la complejidad del tiempo.
Para obtener más información sobre la programación dinámica y practicar algunos problemas interesantes relacionados con ella, consulte los siguientes artículos:
- Tabulación vs Memoización
- Propiedad de subestructura óptima
- Propiedad de subproblemas superpuestos
- ¿Cómo resolver un problema de programación dinámica?
- Enmascaramiento de bits y programación dinámica | Serie 1
- Enmascaramiento de bits y programación dinámica | Conjunto-2 (TSP)
- Dígito PD | Introducción
4. Practica, practica y practica más
Con esto, hemos completado los conceptos básicos de las principales estructuras de datos y algoritmos, y ahora es el momento de probar cada uno de ellos.
Esto es muy aplicable para el aprendizaje de DSA. Has aprendido muchas estructuras de datos y algoritmos y ahora necesitas mucha práctica. Esto puede verse como un paso separado o una parte integrada del proceso de aprendizaje de DSA. Debido a su importancia, lo estamos discutiendo como un paso separado.
Para practicar problemas sobre estructuras de datos y algoritmos individuales, puede utilizar los siguientes enlaces:
- Practicar problemas en Arreglos
- Problemas de práctica en strings
- Problemas de práctica en listas enlazadas
- Problemas de práctica sobre el algoritmo de búsqueda
- Problemas de práctica sobre el algoritmo de clasificación
- Problemas de práctica sobre el algoritmo Divide and Conquer
- Practicar problemas en Stack
- Problemas de práctica en la cola
- Problemas de práctica en el árbol
- Practicar problemas en Graph
- Problemas de práctica sobre el algoritmo Greedy
- Problemas de práctica sobre el algoritmo de recursión
- Problemas de práctica sobre el algoritmo Backtracking
- Problemas de práctica sobre el algoritmo de Programación Dinámica
Aparte de estos, hay muchos otros problemas de práctica que puedes consultar en función de sus respectivas dificultades:
También puede intentar resolver las preguntas más frecuentes de la entrevista según la lista seleccionada por nosotros en:
- Preguntas de codificación imprescindibles para empresas
- Los 50 principales problemas de codificación de arrays para entrevistas
- Los 50 principales problemas de codificación de strings para entrevistas
- Los 50 principales problemas de codificación de árboles para entrevistas
- Los 50 principales problemas de codificación de programación dinámica para entrevistas
También puede probar nuestras listas seleccionadas de problemas de los siguientes artículos:
5. Compite y conviértete en un profesional
Ahora es el momento de poner a prueba tus habilidades y eficiencia. La mejor manera posible es competir con otros. Esto te ayudará a encontrar tu posición entre otros y también te dará una pista sobre las áreas que te faltan.
Hay varias plataformas competitivas en línea disponibles donde puedes participar regularmente. Además, algunos desafíos en línea se llevan a cabo de vez en cuando en un año que también ofrece muchos premios y oportunidades, como:
- Job-a-thon mensual : Es un concurso para participantes individuales. Los participantes tienen la oportunidad de ser contratados por un grupo de empresas que se preseleccionan para entrevistas según sus criterios.
- Bi-Wizard Coding : una competencia de codificación exclusiva para estudiantes. Los 100 mejores estudiantes tienen la oportunidad de ganar premios emocionantes y también acceso a cursos gratuitos.
- Serie de entrevistas : un desafío semanal que brinda una gran oportunidad para que los aspirantes practiquen muchas preguntas basadas en conceptos importantes de estructura de datos y algoritmos para la preparación de entrevistas.
- Problema del día : un problema nuevo todos los días para fortalecer la base de la estructura de datos y el algoritmo.
Para obtener más información sobre dónde competir, puede consultar nuestro artículo detallado Los 15 mejores sitios web para desafíos y competencias de codificación .
Consejos para potenciar tu aprendizaje
Con mucho, hemos discutido en profundidad los 5 pasos cruciales para aprender DSA desde cero. Durante el viaje completo en la hoja de ruta para aprender DSA, aquí hay algunos consejos que seguramente lo ayudarán:
Aprenda los fundamentos del lenguaje de programación elegido a fondo
Pon en práctica cada pequeño concepto que vayas aprendiendo. Asegúrate de aprender los siguientes conceptos:
- Sintaxis básica
- Tipos de datos
- Operadores, Variables, funciones
- Declaración condicional, bucles
- OOP (Programación Orientada a Objetos)
Obtenga una buena comprensión del análisis de complejidad
Comprenda cómo se calcula la complejidad e intente resolver múltiples preguntas para encontrar las complejidades de los programas. También puede probar nuestro cuestionario sobre Análisis de algoritmos para una mejor práctica.
Centrarse en la construcción de lógica
La mejor manera de hacer esto es resolver tantos problemas como puedas desde cero, sin buscar soluciones o editoriales. Cuanto más resuelva, más fuerte será su construcción lógica.
¿Atascado en un problema/tema? No te preocupes, no estás solo.
Es obvio que puedes resolver todos los problemas por ti mismo.
Habrá problemas, horas e incluso días en los que estarás atascado y no podrás encontrar ninguna solución.
No te preocupes, le pasa a todo el mundo. Si está atascado en algún problema, intente leer sugerencias y enfoques para encontrar soluciones. Si aún no puede, vea solo la lógica y codifique por su cuenta. Si te quedas atascado en tipos de problemas similares, probablemente deberías revisar el concepto antes de intentar resolver tipos de problemas similares nuevamente.
También puede probar nuestro programa de asistencia en caso de dudas las 24 horas, los 7 días de la semana, para que podamos ayudarlo a abordar tales situaciones sin sudar.
Se consistente
Cada monumento se construye ladrillo a ladrillo trabajando diariamente, de manera constante, y así es el caso de DSA. Debe intentar aprender al menos 1 tema nuevo todos los días y resolver al menos 1 problema nuevo relacionado con él todos los días. Hacer de esto una práctica para todos los días lo ayudará a dominar DSA de la mejor manera posible.
Asegúrese de ofrecer desafíos de codificación a intervalos regulares también. Es posible que enfrente desafíos para resolver incluso 1 problema al principio, pero al final, todo valdrá la pena. Puede probar GeeksforGeeks POTD para resolver un problema basado en DSA todos los días y aquí también puede usar los foros de discusión para asegurarse de obtener la lógica adecuada. Para saber más sobre los portales de discusión, lea el artículo: Atascado en la programación: obtenga la solución de estos 10 mejores sitios web .
Conclusión
¿Es asi? ¿Se requiere todo esto para dominar las estructuras de datos y los algoritmos y convertirse en Hero from Zero en DSA? Bueno, si ha seguido la hoja de ruta mencionada anteriormente para aprender DSA, entonces esto es todo. Comenzó, aprendió, practicó y compitió con éxito lo suficiente como para llamarse DSA Pro .
Pero, como el universo, el aprendizaje es infinito . Nunca se puede aprender todo sobre cualquier tema. Así que asegúrate de seguir practicando y actualizándote con nuevas competencias, temas y problemas.
Artículos relacionados:
- ¿Cómo empezar a aprender DSA?
- ¿Qué debo aprender primero: estructuras de datos o algoritmos?
- ¿Por qué es importante aprender las estructuras de datos y los algoritmos?
Publicación traducida automáticamente
Artículo escrito por animeshdey y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA