题目
题解
矩阵旋转90°,理论上是矩阵的4个数据块进行相互的替换,只要切割出这四个数据块,并且对其中的每一个数进行遍历,循环替换即可。
我们设该矩阵为 n*n 矩阵,将矩阵划分为四块,如下图:
我们仅需将涂颜色的区块顺时针与其他对应区块替换一周,即可得到想要的矩阵,其替换关系如下:
因此,我们的代码呼之欲出:
public void rotate(int[][] matrix) {
for(int i = 0; i < matrix.length/2 + 1; i++) {
for(int j = i; j < matrix.length - i - 1; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[matrix.length-1-j][i];
matrix[matrix.length-1-j][i] = matrix[matrix.length-1-i][matrix.length-1-j];
matrix[matrix.length-1-i][matrix.length-1-j] = matrix[j][matrix.length-1-i];
matrix[j][matrix.length-1-i] = temp;
}
}
}
提交结果: