48. 旋转图像
题目链接
分组旋转
- 对比旋转前后的矩阵,marix[i][j]被替换为matrix[n-j-1][i],对于matrix[n-j-1][i]也是同样的操作
- 最终得出,四个数字为一组,顺时针旋转
- 按照这个规律,除了中间数字外,其他每组都旋转一次即可
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
for(int i = 0; i < n / 2; i++)
for(int j = 0; j < (n + 1) / 2; j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[n-j-1][i];
matrix[n-j-1][i] = matrix[n-i-1][n-j-1];
matrix[n-i-1][n-j-1] = matrix[j][n-i-1];
matrix[j][n-i-1] = temp;
}
}
}
先翻转后转置
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
for(int i = 0; i < n / 2; i++)
for(int j = 0; j < n; j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[n-i-1][j];
matrix[n-i-1][j] = temp;
}
for(int i = 0; i < n; i++)
for(int j = 0; j < i; j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}