方法一:使用辅助数组
我们以题目中的示例二

作为例子,分析将图像旋转 90 度之后,这些数字出现在什么位置。
对于矩阵中的第一行而言,在旋转后,它出现在倒数第一列的位置:
并且,第一行的第 x 个元素在旋转后恰好是倒数第一列的第 x 个元素。
对于矩阵中的第二行而言,在旋转后,它出现在倒数第二列的位置:
对于矩阵中的第三行和第四行同理。这样我们可以得到规律:
对于矩阵中第 i 行的第 j 个元素,在旋转后,它出现在倒数第 i 列的第 j 个位置。
我们将其翻译成代码。由于矩阵中的行列从 0 开始计数,因此对于矩阵中的元素 ,在旋转后,它的新位置为
。
这样以来,我们使用一个与 大小相同的辅助数组
,临时存储旋转后的结果。我们遍历 中的每一个元素,根据上述规则将该元素存放到
中对应的位置。在遍历完成之后,再将
中的结果复制到原数组中即可。
var rotate = function (matrix) {const n = matrix.length;const matrix_new = new Array(n).fill(0).map(() => new Array(n).fill(0));//for (let i = 0; i < n; i++) {for (let j = 0; j < n; j++) {matrix_new[j][n - i - 1] = matrix[i][j];}}// 复制到原数组中for (let i = 0; i < n; i++) {for (let j = 0; j < n; j++) {matrix[i][j] = matrix_new[i][j];}}};
