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

 

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