商品列表跳轉商品詳情頁
阿新 • • 發佈:2022-05-13
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]]
提示:
n == matrix.length == matrix[i].length
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000
思路:
找規律題,順時針旋轉就先按照主對角線反轉,然後每一行反轉。
class Solution { public: void rotate(vector<vector<int>>& matrix) { //順時針旋轉只需要先沿著主對角線反轉 然後每一行反轉即可 找規律即可 int n=matrix.size(); for(int i=0;i<n;i++){ for(int j=i;j<n;j++){ if(i==j)continue; int temp=matrix[i][j]; matrix[i][j]=matrix[j][i]; matrix[j][i]=temp; } } //在反轉每一行即可 for(int i=0;i<n;i++){ int l=0; int r=n-1; while(l<r){ int temp=matrix[i][l]; matrix[i][l]=matrix[i][r]; matrix[i][r]=temp; l++; r--; } } } };