LeetCode_旋轉矩陣_Array_M

01.07. 旋轉矩陣

簡單粗暴:

class Solution {
    public void rotate(int[][] matrix) {
        int size = matrix.length;
        int[][] arr = new int[size][size];
        for (int i = 0; i < size; i++) {        // 額外空間
            for (int j = 0; j < size; j++) {
                arr[i][j] = matrix[i][j];
            }
        }
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                matrix[j][size - i - 1] = arr[i][j];    // 直接改原數組
            }
        }
    }
}

原地旋轉: (消耗內存居然比上面還大)

class Solution {
    public void rotate(int[][] arr) {
        // arr[j][n - 1 - i] = arr[i][j];
        
        int n = arr.length;
        // 水平反轉
        for (int i = 0; i < n / 2; i++) {
            for (int j = 0; j < n; j++) {
                int temp = arr[i][j];
                arr[i][j] = arr[n - 1 - i][j];
                arr[n - 1 - i][j] = temp;
            }
        }
        // 主對角線反轉
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < i; j++) {
                int temp = arr[i][j];
                arr[i][j] = arr[j][i];
                arr[j][i] = temp;
            }
        }
    }
}

 

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