题目描述
对矩阵顺时针旋转90度 不占用额外内存空间。
样例
给定 matrix =
[
[1,2,3],
[4,5,6],
[7,8,9]
],
原地旋转输入矩阵,使其变为:
[
[7,4,1],
[8,5,2],
[9,6,3]
]
(找规律,矩阵转置,逆序)
(时间复杂度) $O(n^2)$
矩阵转置O(n^2)
逆序O(n^2)
如:
1 2 3
4 5 6
7 8 9
转置: 顺时针旋转90度
1 4 7 7 4 1
2 5 8 8 5 2
3 6 9 9 6 3
C++ 代码
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
if(!matrix.size()||matrix.size()!=matrix[0].size())return;
int n = matrix.size();
for(int i = 0 ; i < n; i++)
for(int j = 0 ; j < i; j++)
swap(matrix[i][j],matrix[j][i]);
for(int i = 0 ; i < n; i++)reverse(matrix[i].begin(),matrix[i].end());
for(int i = 0 ; i < n; i++)
{
for(int j = 0 ; j < n; j++)
{
cout << matrix[i][j] << ' ';
}
puts("");
}
return ;
}
};