You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
do this in-place
将矩阵顺时针旋转90度,并且不开辟多余的空间。
00 | 01 | 02 | 03 |
10 | 11 | 12 | 13 |
20 | 21 | 22 | 23 |
30 | 31 | 32 | 33 |
思路:只旋转1/4的元素,且不包含右边对角线上的元素(橙色部分)。
计算公式为:如果matrix为n阶方阵,则转换公式为:
matrix[x,y]---->matrix[y][n-1-x]---->matrix[n-1-x][n-1-y]---->matrix[n-1-y][x]---->matrix[x][y]
对应JS代码为:
var b = function(matrix){
var n = matrix[0].length;
var temp;
var count=0;
for(var i=0;i<n/2;i++){
for(var j=i;j<n-i-1;j++){
temp = matrix[i][j];
matrix[i][j] = matrix[n-1-j][i];
matrix[n-1-j][i] = matrix[n-1-i][n-1-j];
matrix[n-1-i][n-1-j] = matrix[j][n-1-i];
matrix[j][n-1-i] = temp;
}
}
return matrix;
}
原创,转载请注明出处
来源:oschina
链接:https://my.oschina.net/u/2600761/blog/753309