¿Cuál es la complejidad temporal de este código para encontrar líderes en una matriz?

Como Joshua Alday ya respondió, la complejidad del tiempo en el peor de los casos puede ir hasta [matemáticas] O (n ^ 2) [/ matemáticas]

Si queremos hacer esto en O (n), podemos usar una pila y empujar todos los elementos máximos hasta ahora escaneando la matriz de derecha a izquierda. Por último, haga estallar los elementos hasta que la pila no esté vacía.

A continuación se muestra la implementación para el mismo:

#include

usando el espacio de nombres estándar;
int main ()
{
int t, n, i, max_so_far;

//Casos de prueba
cin >> t;

mientras que (t–)
{
apilar s; / * Crear una pila * /

cin >> n;
int a [n];

para (int i = 0; i <n; i ++)
cin >> a [i];

/ * El elemento más a la derecha es siempre el líder * /
max_so_far = a [n-1];
s.push (a [n-1]);

para (int i = n-2; i> = 0; i–)
{
if (a [i]> max_so_far)
{
s.push (a [i]);
max_so_far = a [i];
}
}

// Pop los elementos e imprimirlos.
while (! s.empty ())
{
cout << s.top () << "";
s.pop ();
}

cout << endl;
}

devuelve 0;
}

Bien, entonces escribamos lo que sabemos. Sabemos que la matriz podría tener una variedad de números posibles, el peor de los casos sería descendente {16, 14, 13, 10, 5, 3}. Para cada ciclo, hacemos 2 verificaciones.

Entonces, para pasar por este ciclo solo una vez que tenemos f (2n), sin embargo, por supuesto, debemos verificar cada número individual en la matriz, incluso el primer número. Con la matriz de ejemplo que publiqué anteriormente

{16, 14, 13, 10, 5, 3} = n + n-1 + n-2 +… + 0
o expresamente
[matemáticas] \ sum_ {i = 0} ^ {n} ni [/ matemáticas]
[matemáticas] n ^ 2 – n [/ matemáticas]
[matemáticas] f (2n ^ 2 – 2n) [/ matemáticas]
Por lo general, cuando hablamos de la complejidad del tiempo, generalmente solo estamos interesados ​​en grandes cantidades de n. Por lo tanto, cuando dibujamos el gráfico para esto, notamos que después de un tiempo, [matemáticas] n ^ 2 [/ matemáticas] es el único término significativo aquí. n (NO [matemática] n ^ 2 [/ matemática]) o cualquier otro número será insignificante.

A este peor caso lo llamamos complejidad, o expresado en notación big-O
[matemáticas] O (n ^ 2) [/ matemáticas]

More Interesting

¿Qué es lo que cambiarías de Java?

Cómo codificar un árbol en un formato de cadena de modo que el árbol pueda reconstruirse a partir de la codificación de la cadena

Dada una matriz de 'n' enteros. ¿Encuentra los números 'k' de manera que la diferencia mínima de todos los pares posibles de números 'k' sea máxima (máxima entre otras diferencias mínimas para varias posibles selecciones de números k)?

¿Cuánto dura el proceso de entrevista en Facebook?

¿Cuáles son las posibles razones para ser rechazado incluso después de haberlo hecho muy bien en una entrevista de codificación in situ? ¿Podría una ronda ligeramente mala resultar en un rechazo?

¿Encontrar un patrón en una cadena con uno o cero falta de coincidencia? Por ejemplo: S = abbbaaabbbabab P = abab Las coincidencias son abbb (índice 0), aaab (índice 4), abbb (índice 6), abab (índice 10). Supongo que se puede hacer mediante alguna modificación del algoritmo KMP.

¿Cuál es un plan de estudio sólido para convertirse en élite en la resolución de problemas de algoritmos para codificar entrevistas?

¿Cuáles son los elementos comunes entre dos matrices de tamaño n y m? ¿Cuál es el tiempo y la complejidad de la memoria?

¿Cuáles son las mejores y peores cosas de las entrevistas telefónicas técnicas?

¿Cuáles son algunas buenas preguntas para la entrevista de JavaScript?

Siendo un estudiante de ingeniería mecánica, ¿cómo me preparo para la entrevista TCS?

¿Cómo se puede estar bien preparado para responder preguntas sobre estructura de datos / algoritmos en entrevistas?

¿Cuáles son algunas de las preguntas técnicas más falsas que le han hecho en una entrevista de desarrollador?

No he recibido respuesta 2 meses después de una entrevista en una empresa de alta tecnología. ¿Tengo alguna posibilidad de conseguir el trabajo?

¿Deberían todos los candidatos, por defecto, pasar al menos un pequeño bucle en el proceso de entrevista en las empresas tecnológicas?