思路,要的是顺时针旋转九十度。
1.按照主对角线,做个对称。
[[1,2,3],[4,5,6],[7,8,9]] 变成:[[1,4,7],[2,5,8],[3,6,9]],这一步用二层循环就行了,n*n的矩阵,所以m.length==m[0].length,用哪个都行
2,竖着,左右两半来个轴对称,变成[[7,4,1],[8,5,2],[9,6,3]]这就是最终答案
class Solution { public void rotate(int[][] matrix) { for(int i=0;i<matrix[0].length;i++) { for(int j=i;j<matrix[0].length;j++) { swap(matrix,i,j,j,i); } } int l=0; int r=matrix.length-1; for(int i=0;i<matrix.length;i++) { l=0; r=matrix.length-1; while(l<r) { swap(matrix,i,l,i,r); l++; r--; } } } public void swap(int [][] matrix,int a,int b,int c,int d) { int temp; temp=matrix[a][b]; matrix[a][b]=matrix[c][d]; matrix[c][d]=temp; } }