力扣

LeetCode 48 旋转图像_职场和发展

思路:过程模拟

第一步

矩阵转置

第二步

矩阵矩阵每行逆置

代码

 

class Solution {
public:
    void zhuanzhi(vector<vector<int>>&matrix)
    {
        for(int i=0;i<matrix.size();i++)
        {
           for(int j=0;j<i;j++)
           {
               swap(matrix[i][j],matrix[j][i]);
           }
        }    
    }
    void nizhi(vector<vector<int>>&matrix)
   
        for(int i=0;i<matrix.size();i++)
        {
           int m=0,l=matrix.size()-1;
           while(m<l)
           {
               swap(matrix[i][m++],matrix[i][l--]);

           }

        }
    }
    void rotate(vector<vector<int>>& matrix) {
zhuanzhi(matrix);
nizhi(matrix);
    }
};
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

小技巧

1.交换两个数
swap(m,n);//交换m,n的值
  • 1.
2.矩阵转置
二维数组mat[m][m]
for(int i=0;i<m;i++)
{
   for(int j=0;j<i;j++)//只需遍历矩阵下三角,与上三角交换
  {
       swap(mat[i][[j],mat[j][i]);
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
3.引入传参

f(&m)