Trabajo muy duro para estudiar 13 horas al día durante más de 7 meses, pero todavía no puedo mejorar mi estructura de datos y habilidades de algoritmos, ¿qué debo hacer?

No lo estás haciendo bien.

Más de 2000 horas invertidas, pero aún así DS y los algoritmos son muy desafiantes, entonces definitivamente lo estás haciendo mal.

  1. Material de referencia : es importante que consulte el material correcto. Hay libros fenomenales: Introducción a los algoritmos de Cormen, los algoritmos de Robert Sedgewick son muy buenos libros. También puede tomar cursos en línea en Coursera, Udacity o MIT OCW.
  2. Implementar : implemente el diseño que leyó y entendió, conozca sus resultados e implicaciones. Tendrá un mejor manejo de casos extremos, valores nulos, usos de memoria y complejidades de tiempo. Intente y visualice su estructura y flujo de solución. Tendrás una mejor comprensión intuitiva.
  3. Práctica : resuelve múltiples problemas, compara con tus compañeros y mejora tus soluciones.
  4. Pregunte y responda : intente encontrar un amigo o instructor personal que sea bueno en esto. Solicite incluso las consultas más triviales si es necesario. Participa en stackoverflow. Se organiza y estructura mucho material sobre este tema en foros web.

Consulte los recursos mencionados en este enlace. Los encontré muy útiles

Primero, deja de llevar la cuenta del tiempo. Recuerdo que cuando era niño y me sentaba a estudiar para los exámenes escolares, hacía un seguimiento del tiempo para saber cuánto tiempo pasaba estudiando (porque nunca me interesaron esas materias). La forma en que ha formulado su pregunta, es claramente evidente que está estudiando para calificar y no para aprender. No te estoy juzgando, solo tuve esa vibra de la pregunta. Así que deja de llevar la cuenta del tiempo. Cuando aprenda, simplemente sumérjase en el tema y deje pasar el tiempo mientras respira el conocimiento.

Segundo, disfruta aprendiendo. Cuando aprenda una nueva estructura de datos y compile con éxito el código para ella, abrace la felicidad cuando vea la pantalla en negro con la salida. Si obtiene errores y pierde la paciencia, tómese un descanso, regrese y trabaje nuevamente. Podrá ver qué salió mal hace solo 10 minutos y cómo, con una mente clara, puede visualizar mejor el problema.

Tercero, practica. Implemente el código para cualquier algoritmo que aprenda. Si se atasca, recuerde que la comunidad en línea está allí para ayudarlo (sin costo). Revise el código implementado disponible en línea publicado por otros. Obtendrá muchas ideas que a su vez mejorarán sus habilidades de codificación.

Cuarto, competir. Hay muchos sitios web que ofrecen una gran cantidad de problemas para resolver. También organizan concursos de codificación. Así que inscríbase en algunos de ellos y compita para realizar un seguimiento de sus mejoras. Si eres principiante, te sugiero Hackerrank y HackerEarth para intermedio.

Por último, un tema a la vez. En lugar de aprender todas las estructuras de datos juntas, aprenda una. Dominarlo Remasterizarlo. Domina de nuevo. La repetición conducirá a la perfección (con comprensión). Resuelva problemas al usarlo y pronto verá mejoras.

Así que deja de llevar la cuenta del tiempo. Aprecia cada momento y disfruta. La mejor de las suertes. 🙂

Cambia tu campo …

Puede sonar incómodo pero cierto … por favor, si este tipo de dedicación no lo lleva a ningún lado, entonces necesita tomar un descanso, reestructurar su pensamiento sobre su futuro y probar su pasión como su carrera porque esto ahora no va a ninguna parte y solo estás desperdiciando tu vida tratando de ser otra persona.

Esto sucede, ya que no es algo para asustarse, pero a veces las cosas no funcionan debido a lo cual debe tomarse un descanso de toda esta parte y comenzar a pensar y explorar los campos en los que está mejor, incluso se necesitan otros 2 –3 meses, pero intente con otro campo ……

En caso de cualquier confusión, mándame un mensaje, estaremos encantados de ayudarte!

Gracias y todo lo mejor.

Swapnil

No escribes software en el vacío. Al igual que la prosa, el software tiene que tratarse de algo.

Las estructuras y algoritmos de datos solo tienen sentido dentro del contexto de aplicaciones específicas. El código para los cálculos de balística se ve muy diferente del código de comercio electrónico, que se ve muy diferente del código del juego, que es muy diferente de las pilas de protocolos, etc.

NUNCA podrá desarrollar ningún tipo de estructura de datos o habilidades de algoritmo sin saber realmente algo sobre un DOMINIO DE PROBLEMA. Si está escribiendo un código de análisis de datos, sus estructuras y algoritmos de datos provienen de estadísticas. Si está escribiendo un código de control del motor, sus algoritmos provienen de la ingeniería automática. Etc.

Ve a aprender algo sobre algo real, entonces quizás puedas desarrollar estructuras de datos y algoritmos.

¿Cómo estás trabajando duro? ¿Qué estás haciendo?

La única forma de mejorar tus habilidades de programación es a través de la práctica . Mucha práctica escribiendo software y resolviendo problemas de programación. Intente escribir varios tipos de programas (web, computadora de escritorio, dispositivos móviles, juegos, etc.). Cuanto más software escriba, mejor será. No puedes evitarlo, a menos que la programación no sea lo tuyo. (No todos pueden programar).

No es deliberado ser duro contigo, pero hablando en términos generales, si realmente hubieras trabajado duro, alcanzarías lo que estabas esperando.

Analicemos su trabajo, que describió como “Trabajo duro”.

Aquí hay solo dos casos:

  1. Caso 1: Puede que no trabajes duro en relación con tus habilidades:

    ¡Puede que no sea tan fácil para usted obtener totalmente las cosas y comprenderlas rápidamente! Usted puede decir: ¡Oh hombre, son 13 horas por día durante 7 meses! Pero debes saber que, nunca es fácil, nada es fácil, porque si es fácil, todos lo harían, ¡pasé 2 meses solo para ser bueno con el hombre de la recursión! ¡y ahora soy muy bueno en recursión, retroceso y DP!

    Si estuviste estudiando durante 13 horas y no alcanzaste lo que querías, no abandones, no estés triste, ¡solo intenta trabajar 14 o 15 o tal vez 20! horas al día.
    Solo mira esto: ¡El MEJOR discurso motivacional N ° 1! – Motivación para el éxito

  2. Caso 2: Trabajas muy duro pero no de manera inteligente:

    Puede pasar mucho tiempo leyendo libros, blogs o incluso códigos, sin practicar, sin escribir códigos usted mismo, sin pensar en sus propios algoritmos. Debes pensar antes de aprender, pensar en cómo puedo hacer X antes de estudiar los métodos que ha creado “People Just LIKE YOU”. Piensa, piensa y piensa.

    Puede practicar problemas fáciles y luego pasar de su cómoda zona de gusanos a la zona fría, dura y peligrosa. Si eres bueno con los problemas de Codeforces C, entonces es hora de pasar a Codeforces D. Sal de la zona cómoda.

    Puede intentar atacar cosas que son realmente más difíciles de lo que puede, comenzar de a poco y crecer, no intente atacar problemas difíciles antes de dominar los fáciles.

    Puede agotarse, ser pesimista o algo así, luego descansar, tratar de meditar.

    Es posible que haya estado tratando de alcanzar un límite específico en la resolución de problemas simplemente usando estructuras de datos y algoritmos, luego intente concentrarse en otros temas como adhocks y matemáticas.

    Es posible que necesite que las estructuras de datos y los algoritmos para construir buenos proyectos, solo el aprendizaje suficiente, comience a ensuciarse las manos en algunos proyectos.

Algo que me ayudó mucho con las estructuras de datos fue LeetCode Online Judge

Su tarea es implementar ciertas piezas de código. Tienes todo tipo de problemas y creo que es realmente bueno para progresar, ya que te obliga a escribir código eficiente.

Además de leetcode, solía implementar muchas cosas por mí mismo. Por ejemplo, implementé pilas, colas, etc. en Swift. Los usé para escribir algoritmos básicos como búsqueda binaria, clasificación de burbujas, etc. y algoritmos más complejos como BFS, A * Search, IDS, etc.

Se trata de practicar, así que trata de resolver algunos problemas de la vida real.

Trabajar duro y largas horas de estudio solo no te lleva a ninguna parte … Necesitas algo más que eso … eso es concentración y comprensión del tema …

Necesitas estudiar inteligentemente …

Tome una estructura de datos simple … diga alguna técnica de clasificación o técnica de búsqueda

Comience desde el principio … búsqueda binaria …

  1. Comprender el algoritmo
  2. Rastrearla
  3. Ahora intente escribir su propio algoritmo basado en su comprensión …
  4. Compare las complejidades del tiempo …
  5. Implemente el algoritmo utilizando el idioma que elija …
  6. Intenta implementarlo en algún proyecto …

Vea que es simple … continúe esto para cada estructura de datos …

También haga algunos cursos en línea que pueden ayudarlo a comprender mejor …

¡Y también conozca la aplicación de la vida real de cada estructura de datos … que lo ayuda a recordarlos de una mejor manera!

Todo lo mejor !!

Hola

Puedo suponer que eres de la ingeniería informática. Si recuerdas el pensamiento

“No trabajes duro Sé inteligente y haz tu trabajo de manera inteligente”.

Solo leer algoritmos y la estructura de datos no dará ningún conocimiento práctico, solo le dará conocimiento teórico.

Comience a trabajar algunos problemas, aplique sus conocimientos en ejemplos donde puede aprender.

Comienza a hacer algunos proyectos.

Al menos una cosa está jodidamente mal con esta mierda. Si realmente estudiaste 13 horas al día durante 7 meses seguidos y no has mejorado tus habilidades, estás haciendo algo mal. Lo más probable es que te hayas estudiado hasta la muerte. Superalo. Tomarse unas vacaciones. Deja de pensarlo por unas semanas. Restablece tu cerebro. ¿Sabes lo importante que es descansar adecuadamente para los culturistas? Lo mismo ocurre con los constructores del cerebro , por así decirlo.

Además, no deberías estudiar demasiado como hiciste con esto. Deje que las cosas arraiguen. Mantén tu cerebro relajado.

Cuando regrese de dichas vacaciones, debe cuestionar sus métodos y hábitos de estudio.

Has logrado identificar un enfoque que no funciona y has persistido en ese mismo enfoque durante siete meses.

Déjame darte un enfoque alternativo que he usado. Si estoy tratando de entender algo y he progresado en unos quince minutos, dejo de hacer lo que estoy haciendo e intento otra cosa. Si todavía no he progresado en un par de horas, dejo el problema por el día y hago algo productivo. Si no puedo resolverlo en una semana, pediré ayuda.

Si no puedo obtener mucha tracción en el transcurso de un semestre, abandono ese tema.

Piensa dónde podrías estar si hubieras invertido tanto tiempo en hacer algo que haces bien. Piense en la cantidad de código que podría haber escrito (y refactorizado y eliminado). Piensa en cuántos documentos podrías haber leído. Y piensa cuánto más feliz hubieras sido hoy.

Puede apestar a los algoritmos. Ciertamente lo hago. Resulta que son bastante poco importantes tanto en programación como en carreras de investigación.

Entonces, ¿qué debería hacer?

Déjalo caer. Haz algo que hagas bien.

A nadie le importa si trabajas duro. El trabajo duro no es algo bueno en sí mismo. En realidad no trabajas duro, eres flojo.

Ten paciencia conmigo, antes de decir que estoy equivocado.

Eres perezoso para concluir que 13 horas por día está más allá del enfoque equivocado.

Eres demasiado vago para admitir que 7 meses de estudio y ningún proyecto están muy mal.

Eres demasiado vago para admitir que estás tratando de forzar un problema que no es susceptible a un ataque de fuerza bruta.

Te estás escondiendo detrás del trabajo ocupado para evitar hacer el trabajo real.

Detenlo y haz un proyecto, aprenderás en una semana más de 7 meses de estudio.

Deja de estudiar ahora mismo.

Comience a hacer software real real.

Escriba un juego, una aplicación, un sitio web, una herramienta de escritorio. Realmente no importa lo que hagas, pero tienes que hacer algo.

13 horas al día es demasiado, probablemente sea el doble de lo que debería estar haciendo, tal vez más del doble.

Tómese el resto del día libre. Ve a la cama y piensa en lo que te gustaría hacer. Me gustaría hacer una nueva versión del clásico juego de Amiga Cannon Fodder , la idea de hacer eso es emocionante para mí. Piensa en lo que es emocionante para ti y al día siguiente, comienza el proceso para hacerlo.

Estudie más inteligente, no más duro. Ve a ver sitios web como http://hackerrank.com

Divida los algoritmos en partes más pequeñas y comprenda qué sucede debajo del capó en cada parte de un algoritmo.

Intente escribir su propio algoritmo para hacer algo antes de aprender otros algoritmos.

Y practica si lo necesitas todos los días.

More Interesting

¿Cuáles son algunos ejemplos de colas de prioridad en Java?

Cómo resolver este problema sin obtener un TLE

¿Estaría de acuerdo en que el aprendizaje profundo es el único algoritmo que rige sobre todos los demás algoritmos en el aprendizaje automático?

¿Puedo encontrar el camino hamiltoniano más corto en un gráfico completo ponderado no dirigido en tiempo polinómico (donde todos los pesos no son negativos)?

¿Qué imprime este código? ¿Cuál es la función de EOLN en este ejemplo?

¿Hay algún uso de algoritmos que se usan en la programación en robótica?

¿Cuál es el inverso matemático de 2 ^ N?

¿Debo compartir un nuevo algoritmo de clasificación que escribí? ¿Existe algún potencial monetario en un algoritmo? De ser así, ¿cómo capitalizo?

¿Explicar diferentes algoritmos de ruta más corta, sus restricciones, complejidades?

Cómo hacer una matriz de entradas de usuario en JavaScript

¿Qué algoritmo (s) de aprendizaje automático es el mejor para la regresión no lineal con un número limitado de datos?

¿Debo ir a un curso de algoritmos o comenzar a resolver problemas en TopCoder / CodeChef, etc.?

Suponiendo que todos estos algoritmos resuelven el mismo tipo de problema, ¿cuál se recomienda? ¿Y por qué?

Cómo llegar a la lógica para construir un método de impresión inversa que imprima los nodos en una lista vinculada usando un enfoque recursivo usando Java

¿Se puede estafar el algoritmo de Zoopla para inflar el precio de una propiedad?