You are given an n x n 2D matrix representing an image.javascript
Rotate the image by 90 degrees (clockwise).java
do this in-placethis
將矩陣順時針旋轉90度,而且不開闢多餘的空間。spa
00 | 01 | 02 | 03 |
10 | 11 | 12 | 13 |
20 | 21 | 22 | 23 |
30 | 31 | 32 | 33 |
思路:只旋轉1/4的元素,且不包含右邊對角線上的元素(橙色部分)。code
計算公式爲:若是matrix爲n階方陣,則轉換公式爲:ip
matrix[x,y]---->matrix[y][n-1-x]---->matrix[n-1-x][n-1-y]---->matrix[n-1-y][x]---->matrix[x][y]ci
對應JS代碼爲:io
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; }
原創,轉載請註明出處table