algoritmo de desplazamiento cíclico

método de desplazamiento cíclico

Artículo de referencia: Conector de contenido . Principalmente de las matrices, cadenas, listas tres casos, la introducción de la aplicación específica del desplazamiento cíclico. Aquí solamente resolver lo que el contexto artículo.

Matriz de desplazamiento cíclico

Método A: Método de módulo

Este método se ha utilizado en Leetcode 189, los autores consideran aquí dos nuevos casos:

  • Si la cantidad de desplazamiento K es la longitud de la matriz len (s) de un múltiplo, entonces no se desplaza;
  • Si K es negativo, es decir, en la dirección opuesta (a la izquierda)

método Modulo debido a la necesidad de abrir una nueva matriz de longitud len (s), esto aumentará el espacio algoritmo de sobrecarga, no cumple con el espacio O (1) algoritmo situ.

Método dos: el tiempo para el espacio

Si desea resolver el problema anterior, a continuación, vamos a considerar una y otra vez, moviendo un total de K veces. Así, la complejidad de tiempo se convierte en O (N * K), hasta O (N ^ 2).

Método tres: el espacio de tiempo

Es decir, la longitud de la matriz se convierte en duplicado, para luchar juntos. Este leetcode-189 también tiene una descripción relacionada.

Tres Reversión Método

El llamado "flip", como [0, N], y N 0 es la posición de cambio, y una posición de cambio (N-1) ....... Descripción algoritmo:

  • En primer lugar [0, n - k - 1] del tirón
  • Entonces [n - k, n - 1] tirón
  • Por último [0, n - 1] invierte
    este algoritmo es realmente muy buena prueba. Utilizamos la dirección representativa de la flecha, la matriz inicial es A-> B | C-> D; después de la inversión en un dos primera B <-a | D <-C; y finalmente completamente convertido, C-> D | A- > B. Voltear como para ver la dirección de la flecha, que es lo que quieren pruebas más intuitivo. Como código de implementación descrito flip:
while (start < end) {
    t = list[start];
    list[start] = list[end];
    list[end] = t;
    start++;
    end--;
}

desplazamiento de cadena

Estos son ejemplos de preguntas para comprobar si contiene. solución intuitiva es mover cada vez que se juzga de nuevo, es necesario determinar len (s) veces.

Ley contra la violencia

Es la forma más intuitiva a la parte superior. La idea es lograr: conocida S1 y S2, S1 a la izquierda, cada vez que un inicio de dos cadenas de inspección de inicio del puntero P1 y P2; uno, dos cheques cada bucle puntero hacia la izquierda.

Con espacio para el tiempo

Empalmar dos cadenas S1 y luego comienza un nuevo dos punteros S1 y S2 a comprobar.

método de módulo

Método para el espacio de módulo de tiempo realmente complicado del algoritmo. También una parte posterior S1 S1 ilusión, un método es en realidad dimos cuenta de módulo.

Lista de desplazamiento cíclico

De leetcode-61, dificultad media. Nunca se puso en marcha.

Supongo que te gusta

Origin www.cnblogs.com/rongyupan/p/12630051.html
Recomendado
Clasificación