题目要求:
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Note:
You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.
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] ]
简单说就是把矩阵顺时针旋转90度,且不能占用额外的二维矩阵空间
实例中,(0,0)位置的1经过旋转到了(0,2), (0,2)位置的3移动到(2,2),(2,2)位置的9移动到(2,0),(2,0)位置的7移动到(0,0)
有如下规律:(i, j) ---- (j, matrix.length - 1 - i), 循环四次刚好回到最开始的位置
以下为代码,有什么问题可以留言交流
class Solution {
public void rotate(int[][] matrix) {
if (matrix == null || matrix.length < 1)
return;
int len = matrix.length;
for (int i = 0; i < len; i++){
for (int j = i; j < len - i -1; j++){
int row = i, col = j, tmp = matrix[i][j],oldr = row, oldc = col;
for(int count = 0; count < 4; count++){
row = oldc;
col = len - oldr - 1;
int tmp2 = matrix[row][col];
matrix[row][col] = tmp;
tmp = tmp2;
oldr = row;
oldc = col;
}
}
}
}
}