You are given annxn2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Note:
You have to rotate the imagein-place, which means you have to modify the input 2D matrix directly.DO NOTallocate another 2D matrix and do the rotation.
Example 1:
Given
input matrix
=
[
[1,2,3],
[4,5,6],
[7,8,9]
],
rotate the input matrix
in-place
such that it becomes:
[
[7,4,1],
[8,5,2],
[9,6,3]
]
[解题思路]
如下图,首先沿逆对角线翻转一次,然后按x轴中线翻转一次。
void rotate(vector<vector<int> > &matrix) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int len = matrix[0].size();
for(int i =0; i<len-1; i++)
{
for(int j=0;j<len-i;j++)
{
swap(matrix[i][j], matrix[len-1-j][len-1-i]);
}
}
for(int i =0; i<len/2; i++)
{
for(int j=0;j<len;j++)
{
swap(matrix[i][j], matrix[len-i-1][j]);
}
}
}
void swap(int& a1, int&a2)
{
int temp = a1;
a1=a2;
a2=temp;
}