題目說明:
給定一個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。