You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
class Solution {
public:
void rotate(vector<vector<int> > &matrix)
{
if (0 == matrix.size()) return;
int low = 0, high = matrix.size() - 1;
while(low < high)
{
int tmp = 0;
for (int i = low; i < high; i++)
{
tmp = matrix[low][i];
matrix[low][i] = matrix[high - i + low][low];
matrix[high - i + low][low] = matrix[high][high - i + low];
matrix[high][high - i + low] = matrix[i][high];
matrix[i][high] = tmp;
}
low++;
high--;
}
}
};
只用一个参数,省略掉high
class Solution {
public:
void rotate(vector<vector<int> > &matrix)
{
if (0 == matrix.size()) return;
const int N = matrix.size() - 1;
int low = 0;
while(low < N - low)
{
int tmp = 0;
for (int i = low; i < N - low; i++)
{
tmp = matrix[low][i];
matrix[low][i] = matrix[N - i][low];
matrix[N - i ][low] = matrix[N - low][N - i];
matrix[N - low][N - i] = matrix[i][N - low];
matrix[i][N - low] = tmp;
}
low++;
}
}
};