思路:
step1:转置;
step2:再对每一行以中点进行翻转(分奇偶)。
空间复杂度:O(1)
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
//step1:转置
for (int i = 0; i < matrix.size(); i++)
for (int j = i + 1; j < matrix[0].size(); j++)
{
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
//step2:再对每一行以中点进行翻转(分奇偶)
if (matrix[0].size() % 2 == 0)
{
for (int i = 0; i < matrix.size(); i++)
{
int begin = 0, end = matrix[0].size() - 1;
while (begin < end)
{
int temp = matrix[i][begin];
matrix[i][begin] = matrix[i][end];
matrix[i][end] = temp;
begin++;
end--;
}
}
}
else
{
for (int i = 0; i < matrix.size(); i++)
{
int begin = 0, end = matrix[0].size() - 1;
while (begin != end)
{
int temp = matrix[i][begin];
matrix[i][begin] = matrix[i][end];
matrix[i][end] = temp;
begin++;
end--;
}
}
}
}
};