Dada una array de tamaño N*M, y un número K. Tenemos que rotar la array K veces hacia el lado derecho.
Ejemplos:
Input : N = 3, M = 3, K = 2 12 23 34 45 56 67 78 89 91 Output : 23 34 12 56 67 45 89 91 78 Input : N = 2, M = 2, K = 2 1 2 3 4 Output : 1 2 3 4
Un enfoque simple pero efectivo es considerar cada fila de la array como una array y realizar una rotación de array. Esto se puede hacer copiando los elementos de K al final de la array al inicio de la array usando una array temporal. Y luego los elementos restantes desde el inicio hasta K-1 hasta el final de la array.
Tomemos un ejemplo:
Java
// Java program to rotate a matrix // right by k times class GFG { // size of matrix static final int M=3; static final int N=3; // function to rotate matrix by k times static void rotateMatrix(int matrix[][], int k) { // temporary array of size M int temp[]=new int[M]; // within the size of matrix k = k % M; for (int i = 0; i < N; i++) { // copy first M-k elements // to temporary array for (int t = 0; t < M - k; t++) temp[t] = matrix[i][t]; // copy the elements from k // to end to starting for (int j = M - k; j < M; j++) matrix[i][j - M + k] = matrix[i][j]; // copy elements from // temporary array to end for (int j = k; j < M; j++) matrix[i][j] = temp[j - k]; } } // function to display the matrix static void displayMatrix(int matrix[][]) { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) System.out.print(matrix[i][j] + " "); System.out.println(); } } // Driver code public static void main (String[] args) { int matrix[][] = {{12, 23, 34}, {45, 56, 67}, {78, 89, 91}}; int k = 2; // rotate matrix by k rotateMatrix(matrix, k); // display rotated matrix displayMatrix(matrix); } } // This code is contributed by Anant Agarwal.
23 34 12 56 67 45 89 91 78
Complejidad temporal: O(N*M)
Espacio auxiliar: O(M)
Consulte el artículo completo sobre Rotar la array a la derecha K veces para obtener más detalles.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA