Supongamos que tenemos una secuencia de números x 1, x 2,., Xn llamada S. ¿Puede proporcionar un algoritmo para encontrar la subsecuencia creciente más larga de una manera eficiente?

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.

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.