简单粗暴:
class Solution {
public void rotate(int[][] matrix) {
int size = matrix.length;
int[][] arr = new int[size][size];
for (int i = 0; i < size; i++) { // 额外空间
for (int j = 0; j < size; j++) {
arr[i][j] = matrix[i][j];
}
}
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
matrix[j][size - i - 1] = arr[i][j]; // 直接改原数组
}
}
}
}
原地旋转: (消耗内存居然比上面还大)
class Solution {
public void rotate(int[][] arr) {
// arr[j][n - 1 - i] = arr[i][j];
int n = arr.length;
// 水平反转
for (int i = 0; i < n / 2; i++) {
for (int j = 0; j < n; j++) {
int temp = arr[i][j];
arr[i][j] = arr[n - 1 - i][j];
arr[n - 1 - i][j] = temp;
}
}
// 主对角线反转
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
int temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
}
}