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