48.旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在** 原地** 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
思路:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| package com.wereash.scut_hot100.matrix;
import java.util.Scanner;
public class Solution048 { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); scanner.nextLine(); int[][] matrix=new int[n][n]; for (int i=0;i<n;i++){ String[] str=scanner.nextLine().split(","); for(int j=0;j<n;j++){ matrix[i][j]=Integer.parseInt(str[j]); } } System.out.println("旋转前的图像是:"); for (int i=0;i<n;i++){ for (int j=0;j<n;j++){ System.out.print(matrix[i][j]); if(j<n-1){ System.out.printf(","); } } System.out.println(); } 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++) { for (int j = 0; j < n/2; j++) { int temp=matrix[i][j]; matrix[i][j]=matrix[i][n-j-1]; matrix[i][n-j-1]=temp; } } System.out.println("旋转前的图像后:"); for (int i=0;i<n;i++){ for (int j=0;j<n;j++){ System.out.print(matrix[i][j]); if(j<n-1){ System.out.printf(","); } } System.out.println(); } } }
|
思考:
- 顺时针旋转180度呢?
- 顺时针旋转270度呢?