Java 将矩阵向右旋转K次
数组是一种线性数据结构,用于存储具有相似数据类型的元素组。它以顺序方式存储数据。当我们创建一个二维数组时,即行和列,我们称之为矩阵。
在本文中,我们将创建一个MxN大小的矩阵,并尝试将其向右旋转K次。这里,’M’和’N’分别是行和列的大小。’K’是我们想要旋转矩阵的次数。
向右旋转矩阵
让我们通过以下视觉表示理解矩阵旋转的含义−
示例1
当我们把矩阵旋转1次−
示例2
当我们旋转矩阵2次时
Matrix语法
Data_Type matrix_name[ row ][ column ];
// declaration
Or,
// declaration with size
Data_Type matrix_name[ row ][ column ] = new Data_Type[sizeofarray];
Or,
// declaration and initialization
Data_Type matrix_name[ row ][ column ] = { {values separated by comma} };
我们可以在我们的程序中使用上面任何一种语法。
步骤
让我们讨论一下我们将如何旋转给定矩阵的方法。
- 步骤1 - 我们将创建四个整数值’row’和’column’,大小为4。第三个整数值为’K’,表示旋转次数,第四个命名为’temp’,用于临时存储值。
-
步骤2 - 声明并初始化一个二维数组arr[][]。
-
步骤3 - 现在,我们将使用一个while循环,循环次数为’k % col’,即旋转的次数。当我们旋转的次数大于’col’时,旋转不会影响原始数组。
-
步骤4 - 在while循环中,我们将使用两个for循环,第一个循环将运行直到行的大小,并在每次迭代期间将矩阵的最后一列的值存储在’temp’变量中。第二个循环将获取剩余的列值并将其向右移位。
-
步骤5 - 在第二个for循环执行完毕后,我们将在矩阵的第一列中存储’temp’变量的值。
-
步骤6 - 当两个for循环都完成其执行后,我们将将k减1。之后,我们将检查k是否大于0。如果大于0,则再次执行for循环,并按照步骤4和5中讨论的方式工作。
在下一节中,我们将看到上述方法的实现。
将矩阵右旋转K次的程序
示例
public class Mat {
public static void main(String[] args) {
int row=4;
int col=4;
int arr[][] = {{7, 2, 1, 3}, {6, 1, 3, 7}, {4, 9, 8, 0}, {8, 0, 1, 2}};
int k = 3 % col; // Number of rotation
int temp;
System.out.println("The given matrix: ");
// loop to print matrix value
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
// loop to perform matrix rotation
while(k > 0){
for( int i = 0; i < row; i++) {
temp = arr[i][col-1];
// storing last column value to temp
for(int j = col-1; j > 0; j--) {
// reverse loop
arr[i][j] = arr[i][j-1];
// shifting column value to right
}
arr[i][0] = temp;
// storing temp value to array again
}
k--; // decementing k
}
System.out.println("After rotating the given matrix " );
// loop to print new matrix value
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
输出
The given matrix:
7 2 1 3
6 1 3 7
4 9 8 0
8 0 1 2
After rotating the given matrix
2 1 3 7
1 3 7 6 9 8 0 4
0 1 2 8
结论
在这篇文章中,我们了解了什么是矩阵以及如何声明和初始化它,从而可以与矩阵一起工作。此外,我们还讨论了一个Java程序,用于将一个矩阵旋转k次。