你可以通过以下
3个简单步骤完成此操作:
1)假设我们有一个矩阵
1 2 3
4 5 6
7 8 9
2)取该矩阵的转置
1 4 7
2 5 8
3 6 9
3)交换行以获得旋转矩阵
3 6 9
2 5 8
1 4 7
Java源代码如下:
public class MyClass {
public static void main(String args[]) {
Demo obj = new Demo();
int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int[][] transpose = new int[3][3];
obj.display(matrix);
obj.rotate(matrix, transpose);
System.out.println();
obj.display(transpose);
}
}
class Demo {
public void rotate(int[][] mat, int[][] tran) {
for (int i = 0; i < mat.length; i++) {
for (int j = 0; j < mat.length; j++) {
tran[i][j] = mat[j][i];
}
}
for (int i = 0, j = tran.length - 1; i != j; i++, j--) {
for (int k = 0; k < tran.length; k++) {
swap(i, k, j, k, tran);
}
}
}
public void swap(int a, int b, int c, int d, int[][] arr) {
int temp = arr[a][b];
arr[a][b] = arr[c][d];
arr[c][d] = temp;
}
public void display(int[][] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
输出:
1 2 3
4 5 6
7 8 9
3 6 9
2 5 8
1 4 7