给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

思路

  1. 分片并确定每个位置旋转前后的映射关系,需要考虑边界情况,容易出错
  2. 考虑将矩阵翻转两次以达到旋转的目的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var rotate = function (matrix) {
const size = matrix.length
for (let i = 0; i < size - 1; ++i) {
for (let j = 0; j < size - i - 1; ++j) {
;[matrix[i][j], matrix[size - 1 - j][size - 1 - i]] = [matrix[size - 1 - j][size - 1 - i], matrix[i][j]]
}
}
const halfSize = Math.floor(size / 2)
for (let i = 0; i < halfSize; ++i) {
for (let j = 0; j < size; ++j) {
;[matrix[i][j], matrix[size - 1 - i][j]] = [matrix[size - 1 - i][j], matrix[i][j]]
}
}
}