基本思路就是:原始矩阵,沿着对角线翻转,最后再每一行单独reverse即可
原始矩阵
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
对角线翻转
[
[1, 4, 7],
[2, 5, 8],
[3, 6, 9]
]
每一行reverse
[
[7, 4, 1],
[8, 5, 2],
[9, 6, 3]
]
这里有个细节需要注意,沿着对角线进行反转的时候,内部的for起始的地方不能是0开始,如果从0开始,那么就恢复原样了
var rotate = function (matrix) {
let row = matrix.length, col = matrix[0].length
for (let i = 0; i < row; ++i) {
// 这里的j需要从对角线处开始
for (let j = i; j < col; ++j) {
[matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]]
}
}
for (let i = 0; i < row; ++i) {
matrix[i].reverse()
}
};