LC-48:旋转图像
我的实现思路:
最简单的就是对这个n*n的二维数组进行先水平翻转,在进行根据主对角线进行反转。
原始的:
1 2 3 7 8 9 7 4 1
4 5 6 ======= 4 5 6 ======= 8 5 2
7 8 9 1 2 3 3 6 9
值的说的是,对于主对角线进行反转的时候。对于行来说应该是全部,对于列还说应该是根据行的编号来确定,不需要对列进行全部的遍历。
我的实现代码:
class Solution {
public void rotate(int[][] matrix) {
// 1、先是水平翻转
for (int i = 0,j = matrix.length - 1; i < matrix.length / 2; i++, j--) {
for (int k = 0; k < matrix[0].length; k++) {
int temp = matrix[i][k];
matrix[i][k] = matrix[j][k];
matrix[j][k] = temp;
}
}
// 2、再是根据主对角线翻转
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < i; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
}
