Serie de preguntas de pincel Leetcode del profesor Liu Yubo

Serie de preguntas de pincel Leetcode del profesor Liu Yubo

11111

1. ¿Qué diablos es una entrevista de algoritmo?

Cuando se trata de entrevistas algorítmicas, muchos estudiantes tendrán miedos persistentes. Pero, de hecho, las entrevistas algorítmicas de la mayoría de las empresas no dan tanto miedo. No es necesario roer toda la "Introducción a los algoritmos" para cambiar a las entrevistas con algoritmos, ni es que solo los concursantes de ACM puedan estar orgullosos de las entrevistas con algoritmos. Por el contrario, la mayoría de las entrevistas algorítmicas se centran en el pensamiento algorítmico, que en realidad es muy básico. En este capítulo, hablemos sobre la entrevista del algoritmo, ¿qué diablos es? ...

1-1 La entrevista de algoritmo es más que solo responder preguntas correctamente

¿Cuál es el objetivo del curso? Que todos tengan una ruta de pensamiento razonable para los problemas de algoritmos en la entrevista.

1-2 La entrevista de algoritmo es solo una parte de la entrevista

Necesitamos ordenar un conjunto de datos

Algoritmo de clasificación rápida O (nlogn)?

Podemos discutir con el entrevistador.

  1. ¿Cuáles son las características de este conjunto de datos?
  2. ¿Es posible contener muchos elementos repetidos?
  3. Si esto es posible, la fila rápida de tres vías es una mejor opción
  4. ¿La mayoría de los datos están más cerca de su ubicación correcta y son casi válidos?
  5. ¿El rango de datos es muy limitado, como ordenar las calificaciones de los estudiantes? Si este es el caso, contar y ordenar es una mejor opción

¿Existen requisitos adicionales para la clasificación?

  1. ¿Necesitas una clasificación estable?
  2. Si es así, la ordenación combinada es una mejor opción

¿Cuál es el estado de almacenamiento de los datos?

  1. ¿Está almacenado en una lista vinculada?
  2. ¿Se puede cargar el tamaño de los datos en la memoria?
  3. La cantidad de datos es grande o la memoria es demasiado pequeña para cargarla en la memoria y se requiere un algoritmo de clasificación externo

1-3 Cómo prepararse para la entrevista de algoritmo


Experiencia del proyecto y problemas reales encontrados en el proyecto.

¿Cuál es el error más impresionante que ha encontrado?

Orientado a objetos

Patrones de diseño

Relacionado con la red; relacionado con la seguridad, relacionado con la memoria, relacionado con la simultaneidad, diseño del sistema, escalabilidad


Respecto al pasado: la participación en proyectos es fundamental

¿Cómo encontrar artículos?

  • lograr
  • Participa en cursos prácticos
    • MOOC
  • Crea tu propio proyecto
    • Crea pequeñas aplicaciones tú mismo: agenda, notas, reproductor ...
    • Resuelve pequeños problemas tú mismo: rastreadores; análisis de datos; estadísticas de frecuencia de palabras ...
    • Proyecto "No es un proyecto": disposición del código de un excelente libro técnico
    • Compartir: blog técnico propio; github, etc.

Aprenda cómo piensa y actúa a través del pasado

  1. ¿El mayor desafío de todos los tiempos?
  2. ¿Errores cometidos?
  3. ¿Fallo encontrado?
  4. ¿Qué es lo que más disfrutas?
  5. ¿Cómo lidiar con los conflictos?
  6. ¿Lo más distintivo que puedes hacer?

Prepare las preguntas adecuadas para hacerle al entrevistador

  1. ¿Cuál es el modo de funcionamiento general de todo el grupo?
  2. ¿Cuál es la planificación de seguimiento de todo el proyecto?
  3. ¿Cómo se resolvió cierto problema en este producto?
  4. ¿Cómo elegir una determinada tecnología? ¿Estándar?
  5. Estoy muy interesado en cierta tecnología, ¿qué oportunidad tendré en su grupo de profundizar en esta tecnología?

1-4 Cómo responder preguntas de entrevistas de algoritmos


Alcance de la preparación para la entrevista de algoritmo

  1. No subestime los algoritmos básicos y las estructuras de datos, concéntrese solo en temas "interesantes"
  2. Varios algoritmos de clasificación
  3. Implementación de algoritmos y estructuras de datos básicos: como montón, árbol binario, gráfico
  4. El uso de estructuras de datos básicas: como lista enlazada, pila, cola, tabla hash, gráfico, Trie y búsqueda ...
  5. Algoritmo básico: primero la profundidad; primero la amplitud; búsqueda binaria, recursividad ...
  6. Ideas de algoritmos básicos: recursividad, divide y vencerás, búsqueda de retroceso, codicia, programación dinámica

La idea general de resolver problemas de entrevistas algorítmicas

  1. Preste atención a las condiciones en la pregunta.

  2. Algunas pistas en el título

    Algunas condiciones en las preguntas están implícitas

    • Diseñar un algoritmo O (nlogn)
    • No es necesario considerar espacio adicional
    • El tamaño de los datos es de aproximadamente 10,000
  3. Si no hay idea de una vez

    • Pruebe algunos casos de prueba simples usted mismo, pruébelo
    • No ignore los algoritmos de fuerza bruta
  4. Podemos ver una pregunta de ejemplo, que es la tercera pregunta de leetcode给定一个字符串,请你找出其中不含有重复字符的 **最长子串** 的长度。

Cuando no tenemos ideas sobre este tema, podemos usar el método de fuerza bruta para calcular y encontrar la subcadena más larga sin letras repetidas en una cadena

  • Para la subcadena s [i ... j] de la cadena s

  • Usando el algoritmo O (n ^ 2) para atravesar i, j, la subcadena S [i, j] más grande que se puede alcanzar;

    • Luego usamos el algoritmo O (length ((s [i… j])) para determinar si s [i… j] contiene letras repetidas
  • La complejidad de tiempo de este algoritmo es O (n ^ 3), para datos con n = 100

Capítulo 2 Análisis de complejidad en la entrevista

A muchos estudiantes les duele la cabeza cuando mencionan el análisis de complejidad e inmediatamente piensan en la complicada derivación matemática en "Introducción a los algoritmos". Pero de hecho, en las entrevistas corporativas en general, los requisitos de análisis de complejidad no son tan altos, pero también es una barrera que no se puede evitar. En este capítulo, le presentaré el análisis de complejidad que debe dominarse en la entrevista. ...

2-1 ¿Qué es Big O?

n representa el tamaño de los datos, f (n) representa una función de n

O (f (n)) representa el número de instrucciones que deben ejecutarse para ejecutar el algoritmo, que es proporcional af (n)

complejidad del tiempo O grande
Método de búsqueda binaria O (logn) Número de instrucciones a ejecutar: a * logn
Encuentre el valor máximo / mínimo en la matriz O (n) Número de instrucciones a ejecutar: b * n
Fusionar el algoritmo de ordenación O (nlogn) Número de instrucciones a ejecutar: c * nlogn
Método de clasificación de selección O (n ^ 2) Número de instrucciones a ejecutar: d * n ^ 2
imagen 20200921154920764

2-2 Tener un concepto de escala de datos

2-3 Análisis de complejidad simple

2-4 Pruebe personalmente la complejidad del tiempo de su propio algoritmo

2-5 Análisis de complejidad del algoritmo recursivo

2-6 Análisis de tiempo amortizado

2-7 Evite el impacto de la complejidad

Supongo que te gusta

Origin blog.csdn.net/qq_41076577/article/details/108712313
Recomendado
Clasificación