Esta es una pregunta de entrevista frecuente sobre matrices. El algoritmo usa Stack para obtener el siguiente elemento mayor para cada elemento de la matriz. Mira esto. Fácil explicación del algoritmo en O (n) complejidad de tiempo.
Algoritmo 1 (ingenuo):
Para cada elemento, repita los elementos de la matriz a la derecha para encontrar el primer elemento que sea mayor que el elemento actual.
- ¿Cómo se prepara para una entrevista de desarrollador de software en solo 3 días?
- En entrevistas recientes de codificación de software (desde el año 2014), ¿se les ha permitido a los entrevistados codificar y rastrear usando una computadora / laptop en lugar de una pizarra?
- No puedo resolver preguntas en InterviewBit. ¿Eso significa que voy a tener un desempeño pobre en la entrevista técnica?
- ¿Se espera obtener una solución para dicha pregunta dentro de una hora en entrevistas de programación?
- ¿Cómo podemos encontrar el número de subsecuencias consecutivas en una matriz, con la propiedad de que la suma de las subsecuencias es menor que un número k?
Si se alcanza el final de la matriz, el siguiente elemento mayor para el elemento actual es nulo.
Complejidad de tiempo: O (n ^ 2)
Complejidad espacial: O (1)
Algoritmo 2 (Optimizado):
Atraviesa la matriz una vez.
1: Si la pila está vacía o la matriz [i] es menor que stack.top, empuje la matriz [i] en la pila.
2: Si bien la matriz [i] es mayor que stack.top, Pop elemento superior e imprime ‘Siguiente elemento superior de la parte superior es matriz [i]’.
3: Empuje la matriz [i] en la pila.
4: Repita los pasos 2-3 hasta llegar al final de la matriz.
5: Finalmente, imprima nulo como siguiente elemento mayor para todos los elementos restantes de la pila.
Complejidad de tiempo: O (n)
Complejidad espacial: O (n)
Créditos: IDeserve