用Java编写程序以将矩阵沿逆时针方向旋转90度
假设我们给出了一个N×N的方阵。任务是逆时针旋转矩阵。例如,
输入1-
N = 3 matrix[ ][ ] = [ [1 2 3], [4 5 6], [7 8 9] ]
输出-
3 6 9 2 5 8 1 4 7
说明:逆时针旋转矩阵后,将生成369258147的输出。
解决这个问题的方法
最初的想法是找到给定矩阵的转置,然后在逐行遍历的同时交换矩阵的每个元素。
以方矩阵的输入为准。
找到矩阵的转置。
用索引n-1交换索引0处的元素。
返回输出。
示例
import java.io.*; class Solution { static void rotateMatrix( int n, int matrix[][]){ for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { int temp= matrix[i][j]; matrix[i][j]= matrix[j][i]; matrix[j][i]= temp; } } for(int i=0;i<n;i++){ int top=0; int bottom = n-1; while(top<bottom){ int temp = matrix[top][i]; matrix[top][i]=matrix[bottom][i]; matrix[bottom][i] = temp; top++; bottom--; } } } static void displayMatrix(int N, int mat[][]){ for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) System.out.print(" " + mat[i][j]); System.out.print("\n"); } System.out.print("\n"); } public static void main(String[] args){ int N = 3; int mat[][] = { {1,2,3}, {4,5,6}, {7,8,9} }; rotateMatrix(N, mat); displayMatrix(N, mat); } }输出结果
运行上面的代码将生成如下输出:
3 6 9 2 5 8 1 4 7