【leetcode】48. 旋转图像

102 阅读1分钟

leetcode-48.png

基本思路就是:原始矩阵,沿着对角线翻转,最后再每一行单独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()
    }
};