问题描述
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。
示例
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4,1],[8,5,2],[9,6,3]]
解法一
解题思路:
我们可以通过多次翻转矩阵来实现旋转的效果。首先,我们沿着主对角线翻转矩阵,然后再沿着垂直方向翻转。这样,矩阵就被顺时针旋转了 90 度。
/*
* @lc app=leetcode.cn id=48 lang=javascript
*
* [48] 旋转图像
*/
// @lc code=start
function rotate(matrix) {
const n = matrix.length;
// 沿着主对角线翻转
for (let i = 0; i < n; i++) {
for (let j = i; j < n; j++) {
[matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]];
}
}
// 沿着垂直方向翻转
for (let i = 0; i < n; i++) {
for (let j = 0; j < Math.floor(n / 2); j++) {
[matrix[i][j], matrix[i][n - 1 - j]] = [matrix[i][n - 1 - j], matrix[i][j]];
}
}
}
// @lc code=end