LeetCode--旋轉圖像

問題描述

給定一個 × n 的二維矩陣表示一個圖像。

將圖像順時針旋轉 90 度。

說明:

你必須在原地旋轉圖像,這意味着你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉圖像。

示例:

給定 matrix = 
[
  [1,2,3],
  [4,5,6],
  [7,8,9]
],

原地旋轉輸入矩陣,使其變爲:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

解題思路

每一次元素的旋轉,會造成矩陣中其他三個位置的值發生改變。

當第一行的前n-1個元素均旋轉完畢,此時矩陣的最外圈元素旋轉完成,接下來旋轉矩陣的內一圈元素,依次類推,最後圖像旋轉完成。

如圖當第一行元素都旋轉完畢,矩陣最外圈元素(綠色)旋轉完成,接下來旋轉內圈(藍色)

Java實現

public void rotate(int[][] matrix) {
    int n = matrix.length;
    for(int i=0;i<Math.floor((double)n/2);i++) {
        for(int j=i;j<n-i-1;j++) {
            int bak = 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] = bak;
        }
    }
}

 

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