给定一个 n × n 的二维矩阵表示一个图像。
将图像顺时针旋转 90 度。
给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ]
void rotate(vector<vector<int>>& matrix) {
if (matrix.empty())
return;
int w = matrix.size();
int h = matrix[0].size();
for (int i = 0; i < w; i++)//先交换对角线元素
{
for (int j = 0; j < w-i; j++)
{
int tmp = matrix[i][j];
matrix[i][j] = matrix[w - j-1][h - i-1];
matrix[w - j - 1][h - i - 1] = tmp;
}
}
for (int i = 0; i < w; i++)//再交换上半部分和下半部分元素
{
for (int j = 0; j < h/2; j++)
{
int tmp = matrix[j][i];
matrix[j][i] = matrix[h - j - 1][i];
matrix[h - j - 1][i] = tmp;
}
}
}