¿Cómo desplazar una matriz?
//Tomar desplazamiento a la derecha como ejemplo?coded?by?passerby
/*
Método 1: mover la matriz un bit hacia la derecha cada vez , moverse k veces
Complejidad del tiempo: O(k*n)?
Complejidad del espacio: O(1)?
*/?
void?rightShift1(int?a[],?int?n,?int?k)
{ k=k%n;? mientras(k--) {? a[n-1]; para(int?i=n-1;i>0;i--)
a[i]=a[i-1]; }
}
/*
Método 2: ¿Usar una matriz auxiliar?
Complejidad temporal: ¿O(n)? /p>
Complejidad del espacio: O(n)?
*/
void?rightShift2(int?a[],?int?n,?int? k)
{ int?b[n];?//Este tipo de inicialización no está estandarizada k=k%n for(int?i=0;i } //¿Inversa? void?reverse(int?a[],?int?sta , ?int?end)?//¿Intervalo abierto izquierdo y cerrado derecho?[sta,end) { end-=1;? while(sta }? /* Método 3: ¿Uso inteligente de la inversión? Orz Complejidad temporal: ¿O(n)? Complejidad espacial: ¿O(1)? */ p> void?rightShift3(int?a[],?int?n,?int?k) { k=k%n inversa(a,?0,?n-k); revertir(a,?n-k,?n); revertir(a,?0?,?n); }