La guía definitiva para principiantes de DSA

Todo gran programador, como usted, trabaja para desarrollar un código que sea lo más eficiente posible y produzca los mejores resultados. Entonces, el objetivo principal de cada programador no es simplemente escribir un código que funcione, sino escribir un código bien estructurado que funcione de manera eficiente. Esta habilidad solo se puede desarrollar si uno tiene una sólida comprensión de las estructuras de datos y los algoritmos . Teniendo esto en cuenta, hemos creado una guía completa para principiantes para que aprendas y domines DSA. Al seguir esta guía definitiva para principiantes de DSA, puede aumentar sus habilidades de DSA desde el nivel de principiante hasta el de maestro, sin duda. ¿Te preocupa por dónde empezar? No se preocupe, lo tenemos cubierto.

Aprenda la estructura de datos y los algoritmos: la guía definitiva para principiantes de DSA

La guía definitiva para principiantes de DSA

En esta publicación, analizaremos en detalle las estructuras de datos y los algoritmos, desde la perspectiva de un principiante. Entonces, en esta guía para principiantes de DSA, aprenderá sobre los conceptos básicos de DSA, por qué y cómo comenzar con DSA, aprendizaje, estrategia, recursos y mucho más. Entonces empecemos.

Índice/hoja de ruta

DSA – Curso a su propio ritmo

Para descifrar cualquier ronda de entrevistas técnicas, es imprescindible tener una comprensión adecuada de las estructuras de datos y los algoritmos . Aprender DSA lo ayudará a escribir un código optimizado que se ejecute más rápido y se destaque entre la multitud. La única manera de lograrlo es aprendiendo DSA. Comience su viaje hoy y prepárese para entrevistas en empresas de primer nivel basadas en productos o servicios como Microsoft, Amazon, Adobe , etc. con nuestro curso de autoaprendizaje DSA . ¡Aprende más!

¿Qué es la estructura de datos y el algoritmo (DSA)?

En el mundo actual, la estructura de datos y los algoritmos son una parte integral de la informática. Es mucho más fácil entender las estructuras de datos y los algoritmos si los dividimos en dos partes: 

  • Estructuras de datos : una estructura de datos es una forma de organizar los datos en una forma que sea accesible para las computadoras. Permite el procesamiento de una gran cantidad de datos en un período de tiempo relativamente corto.
  • Algoritmos : Los algoritmos son conjuntos bien definidos de instrucciones diseñadas que se utilizan para resolver problemas o realizar una tarea. Para explicarlo en términos más simples, es un conjunto de operaciones realizadas paso a paso para ejecutar una tarea.

¿Cómo se relacionan las estructuras de datos y los algoritmos?

La estructura de datos y los algoritmos son diferentes pero están muy interrelacionados, veamos cómo:

  • Una estructura de datos es una entidad que contiene información utilizada por los algoritmos. 
  • Una estructura de datos le permite almacenar elementos en la memoria y proporciona funciones para manipular elementos almacenados. 
  • Algunas estructuras de datos son más adecuadas para resolver problemas específicos. 
  • Implementamos un algoritmo en nuestra computadora usando Estructuras de Datos, que nos permite almacenar los datos que se utilizarán para resolver el problema.

¿Por qué es importante aprender las estructuras de datos y los algoritmos?

Debe haber oído hablar de estructuras de datos y algoritmos en el mundo de la programación de vez en cuando. Entonces, es muy común encontrarse en un dilema sobre por qué debería aprender Estructura de datos y algoritmos. La estructura de datos y los algoritmos ayudan a comprender la naturaleza del problema a un nivel más profundo y, por lo tanto, brindan una solución que resuelve el problema de la mejor manera posible.

Expliquemos a través de algunos escenarios en esta guía para principiantes de DSA por qué es importante aprender DSA:

Declaración del problema 1: desea almacenar y encontrar los registros de algunos pacientes en particular en el hospital. Los desafíos que enfrentará sin tener ningún conocimiento sobre la estructura de datos:

  • Desafío 1: ¿Cómo mantendrá registros de decenas de miles de pacientes?
  • Desafío 2: ¿Cómo buscar rápidamente los registros de un paciente en particular?

Declaración del problema 2: hay varias temporadas de partidos de League Cricket que se llevarán a cabo cada año. Por lo tanto, tiene que haber una manera de encontrar de manera eficiente un montón de métricas de todas las temporadas.

  • Desafío 1: ¿Cómo mantendrás los detalles de cada partido jugado, uno tras otro?
  • Desafío 2: ¿Cómo encontrar métricas de escenarios particulares en varias instancias del partido?

Cada uno de los problemas anteriores y muchos más necesitan un conocimiento e implementación adecuados de estructuras de datos y algoritmos para un almacenamiento, búsqueda y otras operaciones eficientes con los mejores resultados.

¿Cómo aprender estructuras de datos y algoritmos?

Ahora que hemos cubierto los conceptos básicos de estructuras de datos y algoritmos en esta guía para principiantes de DSA, ahora es el momento de aprender DSA. Puede seguir el siguiente método paso a paso para dominar DSA desde cero:

  1. Aprende sobre conceptos fundamentales de Programación
  2. Elija un lenguaje de programación para implementar esos conceptos
  3. Empieza a aprender con Estructuras de datos
  4. Conoce los Algoritmos
  5. Aprenda y practique sobre el análisis de complejidad
  6. Encontrar los mejores recursos para practicar DSA
  7. Practica y practica problemas basados ​​en DSA

1. Aprenda sobre los conceptos fundamentales de la programación:

No importa qué concepto de DSA esté utilizando, necesita un lenguaje de programación para implementar esos conceptos. Por lo tanto, es imprescindible tener una comprensión fundamental de los lenguajes de programación. Existen algunos conceptos básicos de programación que debes conocer sin importar el lenguaje, como por ejemplo:

  • Variables y tipos de datos
  • Estructuras de Control (Declaraciones Condicionales y Bucles)
  • Funciones y cómo usarlas
  • Conceptos de Programación Orientada a Objetos
  • Sintaxis básica
  • depuración
  • IDE y entornos de codificación

1.a) Variables y tipos de datos

Una variable es una ubicación de memoria que contiene valores de un tipo determinado. Es la unidad básica de almacenamiento en un programa. Las variables se crean mediante una declaración o palabra clave que varía según el idioma. Los nombres de las variables suelen ser alfanuméricos, que contienen az y 0-9, y también pueden incluir caracteres especiales como guión bajo (_) o el signo de dólar ($).

Todas las variables usan el tipo de datos durante la declaración para restringir el tipo de datos que se almacenarán. Por lo tanto, podemos decir que los tipos de datos se utilizan para decirle a las variables el tipo de datos que pueden almacenar. Cada vez que se define una variable, el compilador asigna algo de memoria para esa variable en función del tipo de datos con el que se declara. Cada tipo de datos requiere una cantidad diferente de memoria. 

Los siguientes son los tipos de datos más comunes:

  • Entero: es el tipo de dato numérico más común que almacena números enteros sin un componente fraccionario. Ejemplo: 110, 123, 0, etc.
  • Punto flotante: también es un tipo de dato numérico para almacenar valores fraccionarios. Ejemplo: 110.12, 123.001, 0.5 etc.
  • Carácter: se utiliza para almacenar un solo dígito, letra, símbolo, signo de puntuación o espacio en blanco.
  • Booleano: Se utiliza para representar los valores verdadero y falso.
Variables y tipos de datos

Variables y tipos de datos

1.b) Estructuras de Control (Declaraciones Condicionales y Bucles)

En programación, los códigos se ejecutan en formato secuencial. Por lo tanto, es posible que necesite omitir algunas líneas de códigos en función de algunas condiciones o repetir algunas líneas de códigos o algo así. Los lenguajes de programación proporcionan conceptos de estructuras de control para manejar tales situaciones.

Las estructuras de control son conceptos de programación que rompen el flujo secuencial de ejecución y obligan al compilador/intérprete a ejecutar código en un formato específico para algunas líneas de código específicas. Existen principalmente dos tipos de estructuras de control:

  1. Sentencias condicionales : esta estructura de control se utiliza para ejecutar alguna línea de código si se cumple una condición particular. Si no, entonces ejecuta alguna otra línea de código. Dichos conceptos incluyen sentencias if-else , sentencias switch, sentencias try -catch , etc.
  2. Instrucciones de bucle : esta estructura de control se utiliza para ejecutar algunas líneas de código de forma repetitiva hasta que se cumple una condición subyacente. Estos conceptos incluyen bucle for , bucle while y bucle do-while .

1.c) Funciones

Una función es un conjunto de sentencias que toman entradas, hacen algún cálculo específico y producen salidas.

La idea es juntar algunas tareas comunes o repetidas y crear una función para que, en lugar de escribir el mismo código una y otra vez para diferentes entradas, podamos llamar a la función.

La forma general de una función es:

return_type nombre_función([ arg1_type arg1_name, … ]) { código } 

Funciones en C/C++

Funciones en C/C++

1.d) Conceptos de Programación Orientada a Objetos

Como sugiere el nombre, la programación orientada a objetos o OOP se refiere a los lenguajes que utilizan objetos en la programación. La programación orientada a objetos tiene como objetivo implementar entidades del mundo real como herencia, ocultación, polimorfismo, etc. en la programación. El objetivo principal de OOP es unir los datos y las funciones que operan en ellos para que ninguna otra parte del código pueda acceder a estos datos excepto esa función. 

OOP, los conceptos son los siguientes: 

  1. Clase
  2. Objeto 
  3. Método y paso de método
  4. Pilares de OOPS
Conceptos de Programación Orientada a Objetos

Conceptos de Programación Orientada a Objetos

1.e) Sintaxis básica

Cada lenguaje de programación tiene su propia sintaxis, y deberá comprender los conceptos básicos del que está aprendiendo. El conjunto de reglas que definen la estructura de un lenguaje se conoce como sintaxis. Sin la sintaxis de un lenguaje de programación, es casi imposible leerlo o comprenderlo.

La sintaxis básica de algunos de los lenguajes de programación más utilizados se puede aprender utilizando los siguientes enlaces:

Por ejemplo: A continuación se muestra el ejemplo para declarar una variable llamada geeks y asignarle el valor «Hello World».

C++

string geeks = "Hello World";

Java

String geeks = "Hello World";

Python3

geeks = "Hello World";

Javascript

let geeks = "Hello World";

1.f) Depuración

Una de las cosas más terribles y dolorosas para los programadores son los errores , y pase lo que pase, todo programador tiene que pasar por esta fase mientras trabaja en un proyecto. Empiezas a trabajar en un proyecto con plena ilusión. Escribiste miles de líneas de código limpio y todo parece funcionar bien allí, pero cuando intentas ejecutar el proyecto, no funciona o no se comporta de la manera que quieres que se comporte. Es posible que muchos programadores se hayan enfrentado a este problema en sus carreras y, créanos, se vuelve aún más frustrante cuando te encuentras con ellos. La única solución que tiene en tales situaciones es depurar su código.

La depuración consiste en descubrir el origen de un problema en lugar de identificar sus causas, probar su hipótesis e intentar todas las soluciones posibles para eliminar la causa detrás de su comportamiento inesperado. 

1.g) IDEs y Entornos de Codificación

Los entornos de desarrollo integrado (IDE) son herramientas de software que los programadores utilizan para escribir código y organizar grupos de texto. Aumenta la velocidad y la productividad de un programador con características como compilación de código, finalización, resaltado de sintaxis, depuración y otras.

A continuación se muestran algunos ejemplos comunes de IDE:

Estos son algunos de los principales IDE según el lenguaje de programación que elija:

2. Elige un lenguaje de programación

Un lenguaje de programación es un lenguaje de programación que se utiliza para interactuar con las computadoras. Es un conjunto de instrucciones para completar cualquier tarea. Por lo tanto, se vuelve importante elegir un lenguaje de programación en particular y se basa en sus elecciones, como Java, C, C++, Python o cualquier otro lenguaje. Esto lo ayudará a implementar sus ideas que una computadora puede entender y tomar medidas al respecto.

Puede aprender fácilmente el lenguaje de programación de su elección con la ayuda de tutoriales seleccionados sobre algunos de los lenguajes de programación más populares, como:  

3. Comienza a aprender con estructuras de datos

Una estructura de datos es una forma particular de organizar los datos en una computadora para que pueda usarse de manera efectiva. La elección de su estructura de datos siempre dependerá de sus requisitos y escenario de uso. 

¡Ahora debe preguntarse por qué usar estructuras de datos cuando hay conceptos de tipos de datos, variables y objetos en el nivel del lenguaje de programación! 

Permítanos explicarle esto con la ayuda de un ejemplo simple. 

Caso 1: Considere que desea almacenar los registros de 5 personas en su sistema. Podría decir que solo creamos 5 variables, una para cada persona, y almacenamos los datos de manera efectiva. 
Está bien, estamos de acuerdo. Pero ahora consideremos el siguiente escenario.

Caso 2: Considere que desea almacenar datos similares para, digamos, 1000 personas ahora. ¿Cómo lograrás eso?
Si intenta crear 1000 variables, la solución puede costarle más que el problema (ya que el número de personas puede ser indefinido). 

Así que aquí vienen los conceptos de estructuras de datos. Con la ayuda de estructuras de datos, como Array en el escenario anterior, puede almacenar cualquier cantidad de datos, de la manera más eficiente posible.

¿Qué estructura de datos usar y en qué situación?

La elección del tipo de estructura de datos depende completamente de los siguientes parámetros:

  • Tipo de datos a almacenar
  • Cantidad de datos a almacenar
  • Posibles operaciones a realizar sobre los datos almacenados
  • Costo de almacenamiento vs costo de usar una estructura de datos

En términos generales de programación, el tipo de estructura de datos que se utilizará se elige según el tipo de datos que se almacenarán: lineales o no lineales. En base a esto, las estructuras de datos se pueden clasificar en dos categorías:

  • Estructura de datos lineales: las estructuras de datos lineales son estructuras de datos con elementos dispuestos secuencial o linealmente, donde cada elemento está conectado con los elementos adyacentes anterior y siguiente.
    A continuación se muestran algunas estructuras de datos lineales:
  • Estructura de datos no lineales: las estructuras de datos no lineales son aquellas en las que los elementos de datos no están dispuestos de forma secuencial o lineal. Utiliza la memoria de la computadora de manera eficiente en comparación con una estructura de datos lineal. 
Clasificación de la estructura de datos

Clasificación de la estructura de datos

4. Familiarícese con los Algoritmos

La palabra Algoritmo significa “ Un conjunto de reglas a seguir en los cálculos u otras operaciones de resolución de problemas ” o “ Un procedimiento para resolver un problema matemático en un número finito de pasos que frecuentemente mediante operaciones recursivas ”.

Por lo tanto, el algoritmo se refiere a una secuencia de pasos finitos para resolver un problema particular . Los algoritmos pueden ser simples y complejos dependiendo de lo que quieras lograr.

¿Qué es un algoritmo?

¿Qué es un algoritmo?

¿Por qué necesitamos algoritmos?

Ahora debe estar pensando, ¿cuál es la necesidad de un algoritmo y dónde se usa? Entonces, tomemos el escenario anterior donde está almacenando los registros de numerosas personas en el sistema. Ahora considere los siguientes escenarios:

  • ¿Qué sucede si necesita encontrar a una persona con un nombre en particular?
  • ¿Qué sucede si necesita alinear registros con respecto a algunos parámetros?
  • ¿Qué sucede si necesita actualizar algún registro o incluso eliminarlo?
  • ¿Qué sucede si necesita realizar algún otro procesamiento en la información almacenada?
  • Y si…?
  • Y si…?

La respuesta a todos sus «Qué pasaría si…» es el algoritmo . El algoritmo nos permite realizar algunas tareas de la mejor manera posible, de modo que se optimiza el costo de realizar la tarea con respecto al tiempo y la memoria. Esto, a su vez, nos ayuda a reducir el costo total del programa y, por lo tanto, nos lleva a obtener ganancias. 

Algunos de los principales algoritmos incluyen:

  • Algoritmo de fuerza bruta : es el enfoque más simple para un problema. Un algoritmo de fuerza bruta es el primer enfoque que viene a encontrar cuando vemos un problema.
  • Algoritmo recursivo : un algoritmo recursivo se basa en la recursividad. En este caso, un problema se divide en varias subpartes y se llama a la misma función una y otra vez.
  • Algoritmo de retroceso : el algoritmo de retroceso básicamente construye la solución buscando entre todas las soluciones posibles. Usando este algoritmo, seguimos construyendo la solución siguiendo criterios. Cada vez que falla una solución, rastreamos hasta el punto de falla y construimos sobre la siguiente solución y continuamos este proceso hasta que encontramos la solución o todas las soluciones posibles son atendidas.
  • Algoritmo de búsqueda : Los algoritmos de búsqueda son los que se utilizan para buscar elementos o grupos de elementos de una estructura de datos en particular. Pueden ser de diferentes tipos según su enfoque o la estructura de datos en la que se debe encontrar el elemento.
  • Algoritmo de clasificación : clasificar es organizar un grupo de datos de una manera particular de acuerdo con el requisito. Los algoritmos que ayudan a realizar esta función se denominan algoritmos de clasificación. En general, los algoritmos de clasificación se utilizan para clasificar grupos de datos de manera creciente o decreciente.
  • Algoritmo hash : Los algoritmos hash funcionan de manera similar al algoritmo de búsqueda. Pero contienen un índice con un ID de clave. En hashing, se asigna una clave a datos específicos.
  • Algoritmo divide y vencerás: este algoritmo divide un problema en subproblemas, resuelve un solo subproblema y fusiona las soluciones para obtener la solución final. Consta de los siguientes tres pasos:
    • Dividir
    • Resolver
    • Combinar
  • Algoritmo Greedy : En este tipo de algoritmo la solución se construye parte por parte. La solución de la siguiente parte se construye en base al beneficio inmediato de la siguiente parte. La solución que brinde el mayor beneficio se elegirá como la solución para la siguiente parte.
  • Algoritmo de programación dinámica : este algoritmo utiliza el concepto de usar la solución ya encontrada para evitar el cálculo repetitivo de la misma parte del problema. Divide el problema en subproblemas superpuestos más pequeños y los resuelve.
  • Algoritmo aleatorio : en el algoritmo aleatorio usamos un número aleatorio para que brinde un beneficio inmediato. El número aleatorio ayuda a decidir el resultado esperado.

5. Aprenda y practique el análisis de complejidad

¿Por qué análisis de desempeño?

Hay muchas cosas importantes que deben tenerse en cuenta, como la facilidad de uso, la modularidad, la seguridad, la mantenibilidad, etc. para un código. Entonces, ¿por qué preocuparse por el rendimiento ?

La respuesta a esto es simple. Podemos tener todas las cosas anteriores solo si tenemos rendimiento. Entonces, el rendimiento es como una moneda a través de la cual podemos comprar todas las cosas anteriores. Para resumir, rendimiento == escala

Imagine un editor de texto que pueda cargar 1000 páginas, pero que pueda revisar la ortografía 1 página por minuto O un editor de imágenes que tarde 1 hora en rotar su imagen 90 grados a la izquierda O… ya lo tiene. Si una función de software no puede hacer frente a la escala de tareas que los usuarios deben realizar, está prácticamente muerta.

¿Cómo medir el rendimiento de un código?

El rendimiento de un código se mide por el término » Complejidad «, que significa cuánto tiempo y/o espacio requiere un algoritmo para una entrada de un tamaño dado (n). 

La complejidad de un código/algoritmo se puede medir en términos de los siguientes conceptos:

  • Complejidad del tiempo : la complejidad del tiempo se utiliza para medir la cantidad de tiempo necesario para ejecutar el código.
    La complejidad temporal de un algoritmo se expresa comúnmente mediante notaciones asintóticas:
    • Notación Big-O (Ο) : esta notación describe específicamente el peor de los casos. Esta notación se usa principalmente en el análisis de un código, lo 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).
    • Notación Omega (Ω) : esta notación describe específicamente el mejor de los casos.
    • Notación theta (θ) : esta notación representa la complejidad promedio de un algoritmo.
  • Complejidad espacial : la complejidad espacial significa la cantidad de espacio requerido para ejecutar con éxito las funcionalidades del código. 
  • Espacio auxiliar : también encontrará el término Espacio auxiliar muy comúnmente en DSA, que se refiere al espacio adicional utilizado en el programa que no sea la estructura de datos 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 .

6. Encontrar los mejores recursos para DSA

Una guía nunca está completa sin los recursos y referencias adecuados. Del mismo modo, en esta guía definitiva para principiantes de DSA, hemos compilado referencias completas de recursos que puede elegir para aprender DSA.

Hay una gran cantidad de recursos disponibles en el mercado y en Internet, como videoconferencias, tutoriales, artículos, libros, etc., pagados o gratuitos, y en lugar de hacer que los estudiantes sean competentes en estructura de datos y algoritmos, la falta de orientación da como resultado un aprendizaje ineficaz. recursos que matan su interés y curiosidad por el tema.

Encontrar material relevante puede ser un desafío, pero usar un plan estratégico hará que su aprendizaje sea más conveniente y eficiente.
Puede aprender la estructura de datos y los algoritmos de varios tipos de recursos de texto, video o híbridos, como:

7. Practica y Practica

Después de aprender los fundamentos de la programación, elegir un lenguaje de programación y aprender sobre Estructura de Datos y Algoritmos y su complejidad espacio-temporal, se hace necesario practicar el problema basado en diferentes estructuras de datos y algoritmos. 

Hemos curado la lista selectiva de problemas para que usted los resuelva como principiante de DSA, y la llamamos Hoja de DSA para principiantes . El problema en la hoja incluye:

Pregunta Artículo Práctica Video
Node en un índice dado en la lista enlazada Vista Resolver Reloj
Recorrido en orden Vista Resolver Reloj
Tipo de inserción Vista Resolver Reloj
Ordenar montón Vista Resolver Reloj
Combinar dos listas enlazadas ordenadas Vista Resolver Reloj
Apilar usando dos colas Vista Resolver Reloj
Recorrido posterior al pedido Vista Resolver Reloj
DFS de gráfico Vista Resolver Reloj
Insertar un Node en un BST Vista Resolver Reloj
BFS de gráfico Vista Resolver Reloj
Operaciones de montón binario Vista Resolver Reloj
clasificación topológica Vista Resolver Reloj
Recorrido de pedido anticipado Vista Resolver Reloj
Implementación del algoritmo de Dijkstra Vista Resolver Reloj
Buscar un Node en BST Vista Resolver Reloj
Componentes fuertemente conectados (Algo de Kosaraju) Vista Resolver Reloj
Eliminar un Node en una lista vinculada única Vista Resolver Reloj
Recorrido de orden de nivel Vista Resolver Reloj
Insertar de forma ordenada en una DLL ordenada Vista Resolver Reloj
Encuentre el Node n/k en la lista Vinculada Vista Resolver Reloj
Compruebe si el K-th bit está configurado o no Vista Resolver Reloj
Torre de Hanoi Vista Resolver Reloj
array de onda Vista Resolver Reloj
Buscar un elemento en una array Vista Resolver Reloj
Transposición de Matrix Vista Resolver Reloj
Girar 90 grados Vista Resolver Reloj
Anagrama Vista Resolver Reloj
Área rectangular máxima en un histograma Vista Resolver Reloj
Elemento mayor siguiente Vista Resolver Reloj
Máximo de todos los subarreglos de tamaño k Vista Resolver Reloj
Mochila fraccionada Vista Resolver Reloj
Subsecuencia creciente más larga Vista Resolver Reloj
Subsecuencia común más larga Vista Resolver Reloj
Enésimo número catalán Vista Resolver Reloj
Imprimir primero n Números de Fibonacci Vista Resolver Reloj
Número faltante en la array Vista Resolver Reloj
Punto Bitónico Vista Resolver Reloj
Contar palíndromo de substrings de una string Vista Resolver Reloj
Encuentra el elemento mínimo y máximo en una array Vista Resolver Reloj
Número de bits 1 Vista Resolver Reloj
Cambio de moneda Vista Resolver Reloj
Array sumada Vista Resolver Reloj
floyd warhall Vista Resolver Reloj
Suma máxima Rectángulo Vista Resolver Reloj
policias y ladrones Vista Resolver Reloj
Codificación Huffman Vista Resolver Reloj
Distancia desde la fuente (algoritmo de Bellman-Ford) Vista Resolver Reloj
Cola usando pila Vista Resolver Reloj
Número de Provincias Vista Resolver Reloj

Para practicar problemas sobre estructuras de datos y algoritmos individuales, puede utilizar los siguientes enlaces: 

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: 

También puede probar nuestras listas seleccionadas de problemas debajo de los artículos:

Conclusión

El aprendizaje de estructuras de datos y algoritmos es un proceso largo y difícil, pero con la ayuda de esta guía para principiantes de DSA, podemos asegurarle que se puede lograr si sigue el camino anterior de aprendizaje, revisión y práctica de preguntas de manera constante.

Durante la fase de aprendizaje, lo más importante a tener en cuenta es que el aprendizaje es un proceso continuo. por lo tanto, debe ser constante mientras aprende y dedicar al menos una pequeña cantidad de tiempo cada día. Si es inconsistente, es posible que olvide los temas aprendidos anteriormente y tendrá que comenzar desde cero, lo que puede arruinar todo su arduo trabajo.

Como último consejo, aproveche el hecho de que la práctica hace al hombre perfecto y que habrá altibajos en su viaje: no tenga miedo de seguir aprendiendo y creciendo.

Artículos relacionados: 

Publicación traducida automáticamente

Artículo escrito por harendrakumar123 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *