问题描述:
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
分析:题意非常清楚,就是旋转矩阵,另外,根据给出的函数头,可知矩阵行列相等,此外,还要去in-place,即不另外再开辟其他空间完成。因此,只能是先一次完成四个元素的替换。即首先先旋转外圈。然后逐次向内。而在外圈旋转中,每次迭代过程中,完成对应四个元素的互相替换。这个过程要特别注意下标,会比较乱,最好先写出各个定点的的坐标以及他们运动的方向。
代码如下:300ms
public class Solution {
public void rotate(int[][] matrix) {
int row,col;
int length = matrix.length;
int edge = length-1;
int nEdge;
for(row = 0;row<edge;row++){
nEdge = edge;
for(col = row;col<edge;col++,nEdge--){
int val=matrix[row][col];
matrix[row][col] = matrix[nEdge][row];
matrix[nEdge][row] = matrix[edge][nEdge];
matrix[edge][nEdge] = matrix[col][edge];
matrix[col][edge] = val;
}
edge--;
}
}
}