# 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;
            }
        }
    }
}

results matching ""

    No results matching ""