1. 程式人生 > 其它 >LeetCode-48. 旋轉影象

LeetCode-48. 旋轉影象

給定一個 n×n 的二維矩陣matrix 表示一個影象。請你將影象順時針旋轉 90 度。

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

示例 1:

輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]

輸出:[[7,4,1],[8,5,2],[9,6,3]]

示例 2:

輸入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
輸出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

示例 3:

輸入:matrix = [[1]]
輸出:[[1]]
示例 4:

輸入:matrix = [[1,2],[3,4]]
輸出:[[3,1],[4,2]]

class Solution {
    public void rotate(int[][] matrix) {
        int n = matrix.length;
        int[][] matrix_new = new int[n][n];
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                matrix_new[j][n - i - 1] = matrix[i][j];
            }
        }
        
for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { matrix[i][j] = matrix_new[i][j]; } } } }


講道理這道題我以為有一些特別的解法……結果預設解法是用新陣列套進去……進階的解法才是用原地翻轉。我一開始就想著要把它原地翻轉,腦子真的轉不過來了……這裡的解法是用新的陣列套進去。最核心的是用一個式子套出原陣列中的數字翻轉後的位置:matrix(new)​[col][n−row−1] =matrix[ i ][ j ]
















本文來自部落格園,作者:我永遠喜歡石原里美,轉載請註明原文連結:https://www.cnblogs.com/yuan-zhou/p/15750627.html