# 48. 旋转图像
- 在原地旋转二维图像90度
const matrix = [[1,2,3],[4,5,6],[7,8,9]]
rotate(matrix);
console.log(matrix);
// 输出:[[7,4,1],[8,5,2],[9,6,3]]
1
2
3
4
2
3
4
- 先上下旋转,再(左上 -> 右下)对称轴旋转即可达到90度旋转
时间:98.99%
空间:36.35%
var rotate = function(matrix) {
matrix.reverse();
for (let i = 0; i < matrix.length; i++) {
for (let j = i; j < matrix.length; j++) {
[matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]]
}
}
};
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 上下翻转,每层翻转
function rotate(matrix) {
matrix.reverse();
matrix.forEach(row => row.reverse());
}
1
2
3
4
2
3
4
- 上下翻转,(右上 -> 左下) 的对角线翻转
function rotate(matrix) {
const n = matrix.length - 1;
matrix.reverse();
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < n - i; j++) {
[matrix[i][j], matrix[n - j][n - i]] = [matrix[n - j][n - i], matrix[i][j]];
}
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9