Problem:给定一个n*n的二维图片,将这个二维图片按照顺时针旋转90°
求解过程:
求解过程如下所示:
首先对矩阵进行按照对角线进行交换操作
之后将矩阵前n/2列与后n/2列进行两两交换操作 (0<—>n-1 1<—>n-2 2<—>n-3)
参考代码:
package leetcode_50; /*** * * @author pengfei_zheng * 实现二维图片顺时针旋转90度 */ public class Solution48 { public static void rotate(int[][] matrix) { int len = matrix.length; for(int i = 0; i < len; i++){ for(int j = i+1; j < len; j++){ swap(matrix,i,j,j,i); } } for(int i = 0 ; i < len ; i++){ for(int j = 0 ; j < len / 2; j++){ swap(matrix,i,j,i,len-1-j); } } } private static void swap(int[][] matrix, int i1,int j1, int i2,int j2) { int temp = matrix[i1][j1]; matrix[i1][j1]=matrix[i2][j2]; matrix[i2][j2]=temp; } public static void main(String[]args){ int [][]matrix={{1,2,3},{4,5,6},{7,8,9}}; rotate(matrix); int len = matrix.length; for(int i = 0 ; i < len; i++){ for(int j = 0 ; j < len; j++){ System.out.print(matrix[i][j]); } System.out.println(); } } }