Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this in place?
这题是一个矩阵的一个类似转置,给的答案是按照一个圈进行位置的替代。。。自己画个图就知道了。就像一个回字一样,一圈又一圈的进行替换。
void rorate(int ** matrix, int n)
{
for (int layer = 0; layer < n/2; layer ++)
{
int first = layer;
int last = n - 1 - layer;
for (int i = first; i < last; i++)
{
int offset = i - first;
int top = matrix[first][i];
matrix[first][i] = matrix[last - offset][i];
matrix[last - offset][i] = matrix[last][last - offset];
matrix[last][last - offset] = matrix[i][last];
matrix[i][last] = top;
}
}
}