leetcode 48. 旋转图像

思路 1 通过数组下标进行计算

先沿着竖直方向中心线翻转+再沿着主对角线翻转

代码:

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int len = matrix.size();
        //先进行行以中间线进行翻转
        for(auto & num :matrix)
        {
            reverse(num.begin(),num.end());
        }
        for(int i =0;i<len;i++)
        {
            for(int j = 0;j<=len-1-i;j++)
            {
                swap(matrix[i][j] , matrix[len-1-j][len-1-i]); //沿着负对角线翻转
            }
        }
    }
};

思路2 

先进行行列转换,对转换后的矩阵沿着中心线进行左右翻转\
后面一一步可使用reverse函数解决

代码

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
    int len = matrix.size();
    for(int i = 0;i<len;i++)
    {
        for(int j = 0;j<i;j++)
        {
            swap(matrix[i][j],matrix[j][i]); //
        }
    }
    for (auto & num:matrix)
    {
        reverse(num.begin(),num.end()); //对每一行进行交换
    }
    }
};

 

posted @ 2021-09-26 16:07  A-inspire  Views(26)  Comments(0Edit  收藏  举报