【数组】48. 旋转图像
题目:

解答:
方法 1 :转置加翻转
最直接的想法是先转置矩阵,然后翻转每一行。这个简单的方法已经能达到最优的时间复杂度O(N^2)。
1 class Solution { 2 public void rotate(int[][] matrix) { 3 int n = matrix.length; 4 5 // transpose matrix 6 for (int i = 0; i < n; i++) { 7 for (int j = i; j < n; j++) { 8 int tmp = matrix[j][i]; 9 matrix[j][i] = matrix[i][j]; 10 matrix[i][j] = tmp; 11 } 12 } 13 // reverse each row 14 for (int i = 0; i < n; i++) { 15 for (int j = 0; j < n / 2; j++) { 16 int tmp = matrix[i][j]; 17 matrix[i][j] = matrix[i][n - j - 1]; 18 matrix[i][n - j - 1] = tmp; 19 } 20 } 21 } 22 }
方法二:


1 class Solution { 2 public void rotate(int[][] matrix) { 3 int temp=-1; 4 for(int start=0,end=matrix[0].length-1;start<end;start++,end--){ 5 for(int s=start,e=end;s<end;s++,e--){ 6 temp=matrix[start][s]; 7 matrix[start][s]=matrix[e][start]; 8 matrix[e][start]=matrix[end][e]; 9 matrix[end][e]=matrix[s][end]; 10 matrix[s][end]=temp; 11 }; 12 }; 13 } 14 }

浙公网安备 33010602011771号