Este artículo presenta principalmente la inversión de matriz del algoritmo de JavaScript. El artículo presenta el contenido en detalle sobre el tema, que tiene cierto valor de referencia. Los amigos que lo necesiten pueden consultarlo.
1. Inversión de matriz
1.1 tema de leecode - matriz giratoria
Dada una matriz, gire los elementos de la matriz k posiciones a la derecha, donde k es un número no negativo.
Ejemplo:
Entrada: nums = [1,2,3,4,5,6,7], k = 3
Salida: [5,6,7,1,2,3,4]
Explicación:
Gire a la derecha 1 paso: [7 , 1,2,3,4,5,6]
Girar a la derecha 2 pasos: [6,7,1,2,3,4,5]
Girar a la derecha 3 pasos: [5,6,7,1,2 ,3, 4]
1.2 Tema de análisis
- Los elementos del arreglo se rotan de manera ordenada, es decir, la posición de rotación k, lo que significa que cada elemento se mueve hacia atrás k bits, y el elemento con una longitud de nk~n-1 se moverá hacia adelante;
- k es un número entero no negativo, por lo que no hay rotación a la izquierda;
1.3 Ideas para resolver problemas
Bajo la premisa de no usar matrices adicionales, podemos pensar de la siguiente manera, si la longitud de la matriz es longitud, entonces
- Es necesario rotar K bits, es decir, los últimos k bits de la matriz se moverán al frente de la matriz, es decir, cuando invertimos la matriz, podemos conocer las dos matrices [0,k-1], [k,longitud-1], es la matriz correspondiente después de la rotación, pero se invierte el orden de los elementos en las dos matrices;
- Luego, invierta [0, k-1], [k, lenth-1] a su vez, estas dos matrices, la matriz resultante es la respuesta
1.4 Código
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 dieciséis 17 |
|
Salida: [5,6,7,1,2,3,4]
1.5 Análisis de complejidad
- Complejidad de tiempo: Complejidad de tiempo: O(n), donde nn es la longitud de la matriz. Cada elemento se voltea dos veces, un total de n elementos, por lo que la complejidad temporal total es O(2n)=O(n).
- Complejidad espacial: O(1). Solo se requiere espacio constante para almacenar varias variables.
1.6 Otras soluciones
Ideas:
- Dado que se giran k bits, el elemento en la posición [longitud-1-k, longitud-1] se convierte en [0, k-1]
- El elemento en la posición [0, longitud-1-k] se convierte en [longitud-1-k, longitud-1]
- Entonces solo necesitamos dividir la matriz original en [0,k-1], [longitud-1-k,longitud-1], y luego dividirla según [longitud-1-k,longitud-1]+[0 ,k -1] Ensamblar en una matriz
código:
1 2 3 4 5 6 7 8 |
|
Encontrará que en el código anterior, comenté una línea, porque es absolutamente tentador usar el nuevo método Set para fusionar dos matrices, luego, tenga en cuenta que no debe usarse, porque el nuevo método Set hablará de dos matrices Después de la fusión y la deduplicación, si el mismo elemento aparece en la matriz original, ¡el nuevo conjunto le enseñará una lección al usuario!
Resumir
Diferentes personas tienen diferentes ideas sobre la lógica del algoritmo, pero todas conducen al mismo objetivo y la respuesta es la misma. La premisa es que debemos basarnos en problemas claros, un análisis cuidadoso y se deben considerar varias situaciones al verificar .
Hasta ahora, se ha presentado este artículo sobre la inversión de matriz del algoritmo de javascript, espero que pueda ser útil para todos.
Reenviado de: Micro lectura https://www.weidianyuedu.com