天天看點

leetcode刷題(37)——48.旋轉圖像一、題目二、思路三、代碼

一、題目

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

将圖像順時針旋轉 90 度。

說明:

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

leetcode刷題(37)——48.旋轉圖像一、題目二、思路三、代碼
leetcode刷題(37)——48.旋轉圖像一、題目二、思路三、代碼

二、思路

先轉置矩陣,再按列翻轉。

  • 原矩陣:

    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

三、代碼

class Solution {
    public void rotate(int[][] matrix) {
        int l = matrix.length;
        // 轉置
        for(int i = 0; i < l; i++){
            for(int j = i; j < l; j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }            
        }
        // 翻轉(按列對折)
        for(int i = 0; i < l; i++){
            for(int j = 0; j < l / 2; j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[i][l - 1 - j];
                matrix[i][l - 1 - j] = temp;
            }            
        }
    }
}
           

繼續閱讀