OK, veo tu problema. Lo único que necesita para aprender algoritmos es una computadora portátil, una conexión a Internet y una mente lista para aprender. La mejor manera de aprender algoritmos es probar diferentes problemas. Después de todo, los algoritmos no son más que herramientas para resolver problemas. En primer lugar, recomendaría este sitio GeeksforGeeks | Un portal informático para geeks. Trate todos los artículos dados aquí como problemas resueltos.
Primero mire el problema e intente hacerse una idea de la solución. Si es un principiante, intente escribir los programas primero en papel y lápiz (eso es lo que se espera que haga en una entrevista técnica).
En segundo lugar, si se siente cómodo con el problema y su solución. Intente resolverlo en una computadora local e intente desarrollar todos los casos de prueba posibles. (Esto también es algo que se espera que haga en una entrevista técnica)
- ¿Cuáles son algunos de los algoritmos de aprendizaje automático sin supervisión utilizados para la detección de spam?
- ¿En qué se diferencia la ramificación y el límite del retroceso?
- Cómo resolver el problema ADDGP en SPOJ
- ¿Cómo funciona el retroceso en el caso de encontrar un subconjunto de una suma particular?
- ¿Es la composición musical un problema NP?
En tercer lugar, si no obtiene la solución, puede omitir el problema y volver a solucionarlo más tarde. Sin embargo, si está completamente desconcertado, vea la solución e intente obtener el enfoque de la solución. Ahora puede intentar codificarlo. La solución de código completo debe buscarse solo cuando no le quede otra opción. Leer una solución completa realmente puede ayudarlo a aprender nuevas técnicas para abordar otros problemas nuevos. Sin embargo, hacerlo con demasiada frecuencia lo inhibirá de desarrollar un proceso de pensamiento que sea más importante que la solución real del problema . Recuerde que nunca podrá conocer todos los métodos posibles para resolver todos los posibles problemas que pueda enfrentar mientras codifica.
En cuarto lugar, una de las cosas más importantes que debe aprender es saber cómo analizar su código de espacio y tiempo. Cada vez que codifique algo, intente calcular su complejidad de tiempo.
En quinto lugar, trate de pensar en formas en que podría disminuir la complejidad del tiempo de los algoritmos. Siempre es un ejercicio útil descubrir tantas formas de resolver un problema particular como sea posible. Para este primer recurso al forzamiento bruto y luego avanzar hacia arriba.
Una vez que haya resuelto una buena cantidad de preguntas de los temas comunes, es posible que desee
sumérjase en la codificación competitiva. En este caso puedes probar Codeforces. Este es el mejor sitio para explorar los rincones de la codificación competitiva. Pero precaución: la codificación competitiva no es pan comido, el progreso estará plagado de dificultades. Hay muchos otros sitios que son increíbles para la codificación competitiva. Pero no voy a entrar en esos detalles porque es suficiente hacer religiosamente el sitio mencionado anteriormente. No es necesario ser un gran codificador competitivo para ser un maestro en algoritmos. Sin embargo, [matemáticas] [/ matemáticas] alguna exposición a la competencia la codificación es generalmente requerida y recomendada [matemáticas]. [/ matemáticas]
Ahora es posible que desee utilizar su conocimiento del algoritmo y la estructura de datos para obtener un excelente trabajo u oferta de pasantía. Para esto, se le pedirá que aparezca en entrevistas que se llevan a cabo en diferentes campus universitarios. Para estas entrevistas, debe profundizar en las preguntas típicas de la entrevista. Sitios como LeetCode Online Judge y LintCode – Home son maravillosos en este sentido. Otro gran sitio es la preparación de la entrevista de codificación de forma fácil. Incluso la práctica | GeeksforGeeks tiene una buena variedad de preguntas. Pero hay que tener en cuenta que aunque el conocimiento de las estructuras de datos y los algoritmos es una habilidad necesaria para una entrevista de software, puede que no sea la condición suficiente. También debe estar bien versado en otras materias basadas en ciencias de la computación. Además [matemáticas] [/ matemáticas], incluso si no está interesado en codificar entrevistas, estos sitios le proporcionan problemas de entrevistas frecuentes (preguntas de las principales empresas como Facebook, Amazon, Google y Microsoft) que son algorítmicamente
estimulante.
Ahora llegando a lo que no debes hacer. No lea un libro ni siga una serie de conferencias en video sin entrar en el código. Hojear un libro de texto tratando de obtener una lógica vaga del algoritmo no ayudará . Debes codificarlo.
No intentes codificar todas tus tareas en lenguaje C (a menos que seas un gran programador). C ++ o Java o Python pueden ser más fáciles. Puede usar sus bibliotecas para hacer que su vida de programación sea un poco más fácil.
PD: Soy un estudiante universitario de TI y voy a aparecer para entrevistas técnicas. Este es un resumen de las técnicas que he encontrado útiles para un codificador de intelecto promedio como yo.