# 48 Rotate Image
先用簡單的矩陣舉例想一下將matrix旋轉九十度會發生什麼事。
1 2 3
4 5 6
7 8 9
7 4 1
8 5 2
9 6 3
從以上舉例可歸納出規則
00 -> 02
01 -> 12
02 -> 22
matrix[i][j] -> matrix[j][n-1-i]
用非in-place的做法就是開一個新的nxn矩陣,按照上面的規則把pixel一一放進去即可。
若要in-place,就需要多一點步驟,
先transpose,再mirror,兩element交換可以用in-place達成
1 2 3
4 5 6
7 8 9
1 4 7
2 5 8
3 6 9
7 4 1
8 5 2
9 6 3
完整原始碼
public class Solution {
public void rotate(int[][] matrix) {
for(int i = 0; i<matrix.length; i++){
for(int j = i; j<matrix[0].length; j++){
int temp = 0;
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
for(int i =0 ; i<matrix.length; i++){
for(int j = 0; j<matrix.length/2; j++){
int temp = 0;
temp = matrix[i][j];
matrix[i][j] = matrix[i][matrix.length-1-j];
matrix[i][matrix.length-1-j] = temp;
}
}
}
}