题目说明:
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后(顺时针)的NxN矩阵,保证N小于等于500,矩阵元素小于等于256。
注意:不要使用缓存矩阵
输入
3
1 2 3
4 5 6
7 8 9
输出
7 4 1
8 5 2
9 6 3
拓展:逆时针旋转90度,返回旋转后的矩阵。
顺时针旋转:(具体分析思路见代码)
1 public class case8_TransformMatrix { 2 static Scanner sc = new Scanner(System.in); 3 static int m = sc.nextInt();// 矩阵的阶数 4 public static void main(String[] args) { 5 6 int[][] matrix = new int[m][m]; 7 8 setScanMatrix(matrix); 9 getPrintMatrix(matrix); 10 clockwise1(matrix,m); 11 //colckwise2(matrix,m); 12 13 } 14 //打印矩阵 15 private static void getPrintMatrix(int[][] matrix) { 16 for (int[] arr : matrix){ 17 for (int e : arr) { 18 System.out.print(e + " "); 19 } 20 System.out.println(); 21 } 22 } 23 //从键盘输入矩阵 24 private static void setScanMatrix(int[][] matrix) { 25 for (int i = 0; i < m; i++) { 26 for (int j = 0; j < m; j++) { 27 matrix[i][j] = sc.nextInt(); 28 } 29 } 30 } 31 //第一种方法结局顺时针旋转90输出矩阵 32 //思路是原矩阵旋转90度之后,第一行成为最后一列; 33 private static void clockwise1(int[][] matrix, int m) { 34 35 for (int i = 0; i < m; i++) {//输出旋转90度的矩阵 36 for (int j = m - 1; j >= 0; j--) { 37 System.out.print(matrix[j][i] + " "); 38 } 39 System.out.println(); 40 } 41 } 42 }
逆时针旋转
1 public class test { 2 3 public static void main(String[] args) { 4 Scanner in = new Scanner(System.in); 5 int a = in.nextInt(); 6 int x[][] = new int[a][a]; 7 for (int i = 0; i < a; i++) { 8 for (int j = 0; j < a; j++) { 9 x[i][j] = in.nextInt(); 10 } 11 } 12 for (int i = a-1; i >=0; i--) { 13 for (int j = 0; j <a; j++) { 14 System.out.print(x[j][i]+" "); 15 } 16 System.out.println(); 17 } 18 } 19 }
逆时针输出
3 6 9
2 5 8
1 4 7
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。