Day 10旋转图像

problem describe:

给定一个 n × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。
示例 1:

给定 matrix = 
[
  [1,2,3],
  [4,5,6],
  [7,8,9]
],

原地旋转输入矩阵,使其变为:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

由于是n*n的矩阵,所以还是相对简单的,就观察矩阵,我的思路是先将矩阵的每一列逆置,然后再将此矩阵转置
原矩阵

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

将其每一列逆置

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

再将其转置

[7,4,1],
[8,5,2],
[9,6,3]
class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int m=matrix.size();
        int n=matrix[0].size();
        int temp =0;
        for(int i=0;i<n;i++)//将每一列倒置
        {
            int begin=0;
            int end=n-1;
            while(begin<end)
            {
                temp=matrix[begin][i];
                matrix[begin][i]=matrix[end][i];
                matrix[end][i]=temp;
                end--;
                begin++;
            }

        }
        //原地转置n*n矩阵
        for(int i=0;i<m;i++)
            for(int j=i;j<n;j++)
            {
                temp=matrix[i][j];
                matrix[i][j]=matrix[j][i];
                matrix[j][i]=temp;
            }

    }
};

猜你喜欢

转载自blog.csdn.net/shine10076/article/details/82695736