48-旋转图像


思路,要的是顺时针旋转九十度。
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;
}
}

浙公网安备 33010602011771号