leetcode-面試題 01.07. 旋轉矩陣

在這裏插入圖片描述

我們知道第一個點的座標 是基於(0,0)給的, i 是到第一行的距離, j是到第一列的距離。

圓圈 代表點,各個點基於一個正方形給的座標,要將其全部轉換爲 第一個正方形的座標(即爲真正座標)。
經過旋轉後,如下圖。


QQ圖片20200407105624.png

第一個圓圈的座標爲正常的 :(i,j)。
轉換後二 : (j,N-i-1)
轉換後三 : (N-i-1, N-j-1)
轉換後四 : (N-j-1,i)

故選擇四分之個區域,將其四個座標進行 循環更換即可。

class Solution {
    public void rotate(int[][] matrix) {
        int N = matrix.length;
        // 選擇 四分之一區域 
        for(int i = 0; i < N / 2; i++){
            for(int j = 0; j < (N + 1) / 2; j++){ // 四個座標 輪流轉換。
                int temp = matrix[i][j];
                matrix[i][j] = matrix[N - j - 1][i];
                matrix[N - j - 1][i] = matrix[N - i - 1][N - j - 1];
                matrix[N - i - 1][N- j - 1] = matrix[j][N - i - 1];
                matrix[j][N - i - 1] = temp;
            }
        }
    }
}

畫圖太爛,大家見諒。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章