分析:
关于矩阵变来变去的这种题目,首先要想到矩阵的转置,先将矩阵转置之后,再看看如何变换。
以示例2中的matrix举例,如下所示:
过程就没有什么好说的了,思路特别清晰,就一句话,先转置,再交换。
交换的时候,我们设置两个指针left和right,分别向中间逼近。
class Solution {
public void rotate(int[][] matrix) {
int temp;
for(int i = 0; i < matrix.length; i ++) {
for(int j = i; j < matrix.length; j ++) {
temp = matrix[j][i];
matrix[j][i] = matrix[i][j];
matrix[i][j] = temp;
}
}
int left = 0, right = matrix.length - 1;
while(left <= right) {
for(int i = 0; i < matrix.length; i ++) {
temp = matrix[i][left];
matrix[i][left] = matrix[i][right];
matrix[i][right] = temp;
}
left ++;
right --;
}
}
}
网友评论