1. 程式人生 > 其它 >商品列表跳轉商品詳情頁

商品列表跳轉商品詳情頁

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