Suponga que su matriz también contiene índices junto con entradas para que podamos usarlos más adelante.
Paso 1: ordenar la matriz. Use cualquier algoritmo de ordenación, pero junto con las entradas guarde también sus índices sin cambios.
Puede usar la combinación de clasificación para la complejidad de tiempo O (N LOG N), si es posible, puede usar la clasificación de cubetas también para la complejidad de tiempo O (N), pero recuerde almacenar índices sin alterar su valor junto con las entradas.
Ahora solo recorra la matriz ordenada y mantenga una temperatura variable.
- Cómo evaluar [matemáticas] \ displaystyle [/ matemáticas] [matemáticas] \ prod_ {k = 0} ^ \ infty \ left (1- \ frac {2 ^ {2 ^ k}} {4 ^ {2 ^ k} + 1} \ right) [/ math]
- Cómo calcular la integral [matemáticas] \ displaystyle \ int_0 ^ 1 \ frac {\ ln (1-x)} {x} \ mathrm {d} x [/ math]
- Cómo resolver [matemáticas] (x ^ 3 + 2x) ^ {\ frac {1} {5}} = (x ^ 5 – 2x) ^ {\ frac {1} {3}} [/ matemáticas]
- Cómo calcular [matemáticas] \ cos \ left (\ frac {2 \ pi} {7} \ right) + \ cos \ left (\ frac {4 \ pi} {7} \ right) + \ cos \ left (\ frac {6 \ pi} {7} \ right) [/ math]
- Rango de la función [matemáticas] f (x) = \ sqrt {x ^ 2 + x + 1} – \ sqrt {x ^ 2-x + 1} [/ matemáticas] es? ¿Cómo?
La idea es que ya sabemos que los números están en una secuencia creciente (suponiendo que esté ordenado en orden ascendente, realmente no importa si es ascendente o descendente)
Entonces, a medida que los números aumentan o disminuyen, simplemente verifique la mayor ejecución de los índices continuos.
Esa será su subsecuencia creciente más larga.
Ejemplo: matriz (1: 23, 2: 45, 3: 12, 4: 1000, 5: 49, 6: 74, 7: 89)
después de la clasificación: 12 (índice 3), 23 (índice 1), 45 (índice 2), 49 (índice 5), 74 (índice 6), 89 (índice 7), 1000 (índice 4)
La mayor serie de índices continuos es 49 (índice 5), 74 (índice 6), 89 (índice 7). De ahí su respuesta en O (N log N) complejidad de tiempo.