Dada una array mat[][] de dimensiones M * N , la tarea es imprimir la array obtenida después de rotar cada i -ésima fila de la array i veces en el sentido de las agujas del reloj.
Ejemplos:
Entrada: mat[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
Salida:
1 2 3
6 4 5
8 9 7
Explicación:
La fila 0 se gira 0 veces. Por lo tanto, la fila 0 sigue siendo la misma que {1, 2, 3} .
La primera fila se gira 1 vez. Por lo tanto, la primera fila se modifica a {6, 4, 5}.
La segunda fila se gira 2 veces. Por lo tanto, la segunda fila se modifica a {8, 9, 7}.
Después de completar las operaciones anteriores, la array dada se modifica a {{1, 2, 3}, {6, 4, 5}, {8, 9, 7}}.Entrada: mat[][] = {{1, 2, 3, 4}, {4, 5, 6, 7}, {7, 8, 9, 8}, {7, 8, 9, 8}}
Salida :
1 2 3 4
7 4 5 6
9 8 7 8
8 9 8 7
Enfoque: siga los pasos a continuación para resolver el problema:
- Recorra la array dada en fila, de manera inteligente y para cada i -ésima fila , realice los siguientes pasos:
- Invierte la fila actual de la array .
- Invierte los primeros i elementos de la fila actual.
- Invierta los últimos (N – i) elementos de la fila actual, donde N es el tamaño actual de la fila.
- Después de completar los pasos anteriores, imprima la array mat[][] .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to rotate every i-th // row of the matrix i times void rotateMatrix(vector<vector<int> >& mat) { int i = 0; // Traverse the matrix row-wise for (auto& it : mat) { // Reverse the current row reverse(it.begin(), it.end()); // Reverse the first i elements reverse(it.begin(), it.begin() + i); // Reverse the last (N - i) elements reverse(it.begin() + i, it.end()); // Increment count i++; } // Print final matrix for (auto rows : mat) { for (auto cols : rows) { cout << cols << " "; } cout << " "; } } // Driver Code int main() { vector<vector<int> > mat = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; rotateMatrix(mat); return 0; }
1 2 3 6 4 5 8 9 7
Complejidad de tiempo : O (N * M), ya que estamos usando bucles anidados para atravesar N * M veces.
Espacio auxiliar : O(1), ya que no estamos utilizando ningún espacio adicional.
¡ Consulte el artículo completo sobre Modificar una array girando la fila enésima exactamente i veces en el sentido de las agujas del reloj 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