LeetCode-48. 旋轉影象
阿新 • • 發佈:2021-12-30
給定一個 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