Hola,
Me alegro de que quisieras hacer esta pregunta.
Lo que quiere preguntar es que cuando podemos encontrar la diferencia máxima en O (n) usando DP, entonces ¿por qué no podemos encontrar la diferencia mínima en O (n) por DP, ¿verdad?
- ¿Cuáles son los buenos sitios web de desafíos de codificación?
- ¿Dónde puedo encontrar recursos adecuados para las preguntas de diseño del sistema formuladas en entrevistas?
- ¿Qué tan difíciles son las entrevistas con los ingenieros de software de Bloomberg en comparación con otras compañías tecnológicas como Google, Facebook, etc.?
- ¿Cómo se estructura una típica entrevista SDE2 en Amazon India o Microsoft India para un candidato experimentado de 9 años?
- Como tengo tiempo suficiente para hacerlo, ¿qué debo estudiar para las entrevistas de Google, Microsoft, Directi, Flipkart y Amazon dentro de un año?
Estoy avanzando asumiendo que he entendido su pregunta correctamente.
¡Considere este código para encontrar la máxima diferencia! Tenga en cuenta que en cada punto del tiempo, si mantenemos el elemento más pequeño y seguimos encontrando la máxima diferencia posible en cada paso, terminamos en O (n)
Hacemos un seguimiento de:
1. El elemento mínimo
2. La diferencia máxima encontrada hasta ahora
int elemento_min = arr [0]; int diff = arr [1] -arr [0]; para (i = 1; i diff) diff = arr [i] -min_element; if (arr [i] <elemento_min) elemento_min = arr [i]; } return diff;
Por lo tanto, en este caso de máxima diferencia, solo necesitamos mantener el número más pequeño hasta ahora en cada paso.
Ahora considere el problema de la diferencia mínima.
Aquí, no podemos adoptar una forma similar, ya que mantener el elemento más grande y encontrar la diferencia (cosas similares a las anteriores) no necesariamente nos dará la mínima diferencia.
Por lo tanto, no nos queda otra opción que ordenar la matriz , la diferencia mínima sería la diferencia mínima entre 2 valores consecutivos.
Aquí está el código:
Ordenar un minval = infinito para i = 1 a N-1, inclusive si minval> A [i] - A [i-1] entonces minval = A [i] - A [i-1] imprimir minval
¡Salud!