You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
题解:
如果要原地算法的话,就只能用交换实现了。首先把matrix[i][j]和matrix[j][i]交换,然后把整个矩阵左右翻转,如下图所示:
1 2 3 1 4 7 7 4 1
4 5 6 2 5 8 8 5 2
7 8 9 3 6 9 9 6 3
JAVA代码:
1 public class Solution { 2 public void rotate(int[][] matrix) { 3 int n = matrix.length; 4 for(int i = 0;i < n;i++){ 5 for(int j = i+1;j < n;j++){ 6 int temp = matrix[i][j]; 7 matrix[i][j] = matrix[j][i]; 8 matrix[j][i] = temp; 9 } 10 for(int j = 0;j < n/2;j++){ 11 int temp = matrix[i][j]; 12 matrix[i][j] = matrix[i][n-j-1]; 13 matrix[i][n-j-1] = temp; 14 } 15 } 16 } 17 }