题目
思路
思路一:两步变化,先转置再每行反转
思路二:按圈做四元环循环变换
Java 解法
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
for (int i = 0; i < n; i ++) {
for (int j = i + 1; j < n; j ++) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
for (int i = 0; i < n; i ++) {
int l = 0, r = n - 1;
while (l < r) {
int tmp = matrix[i][l];
matrix[i][l] = matrix[i][r];
matrix[i][r] = tmp;
l ++;
r --;
}
}
}
}
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
for (int layer = 0; layer < n / 2; layer ++) {
int top = layer;
int bottom = n - 1 - layer;
int left = layer;
int right = n - 1 - layer;
for (int k = 0; k < right - left; k ++) {
int tmp = matrix[top][left + k];
matrix[top][left + k] = matrix[bottom - k][left];
matrix[bottom - k][left] = matrix[bottom][right - k];
matrix[bottom][right - k] = matrix[top + k][right];
matrix[top + k][right] = tmp;
}
}
}
}