旋轉(zhuǎn)圖像
- https://leetcode.cn/problems/rotate-image/
描述
- 給定一個(gè) n × n 的二維矩陣 matrix 表示一個(gè)圖像。請(qǐng)你將圖像順時(shí)針旋轉(zhuǎn) 90 度。
- 你必須在 原地 旋轉(zhuǎn)圖像,這意味著你需要直接修改輸入的二維矩陣。請(qǐng)不要 使用另一個(gè)矩陣來旋轉(zhuǎn)圖像。
示例 1
輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
輸出:[[7,4,1],[8,5,2],[9,6,3]]
示例 2
輸入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
輸出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
提示
- n == matrix.length == matrix[i].length
- 1 <= n <= 20
- -1000 <= matrix[i][j] <= 1000
算法實(shí)現(xiàn)
function rotate(matrix: number[][]): void {let n = matrix.length;for (let i = 0, len = n / 2; i < len; i++) {for (let j = 0, tmp: number; j < n; j++) {[matrix[i][j], matrix[n - i - 1][j]] = [matrix[n - i - 1][j], matrix[i][j]];}}for (let i = 0; i < n; i++) {for (let j = 0, tmp: number; j < i; j++) {[matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]];}}
};
- 想要旋轉(zhuǎn)圖像,就要找到一個(gè)中心軸來作為旋轉(zhuǎn)的基礎(chǔ)
- 在原有矩陣上操作,類似于排序,這樣,使用元素之間的交換來做
- 這里面有一個(gè)技巧
- 以矩陣中間的x方向軸(中位線) 上下交換
- 再以斜-45度對(duì)角線(前提: 以左上角為原點(diǎn)) 進(jìn)行交換,即可轉(zhuǎn)換完成