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?
分析:先沿对角线进行对折,然后沿水平中线对折。
运行时间:6ms
1 class Solution { 2 public: 3 void rotate(vector<vector<int>>& matrix) { 4 int n = matrix.size(); 5 for(int i = 0; i < n; i++){ 6 for(int j = 0; j < n - i; j++){ 7 int temp = matrix[i][j]; 8 matrix[i][j] = matrix[n - 1 - j][n - 1 - i]; 9 matrix[n - 1 - j][n - 1 - i] = temp; 10 } 11 } 12 for(int i = 0; i < n / 2; i++){ 13 for(int j = 0; j < n; j++){ 14 int temp = matrix[i][j]; 15 matrix[i][j] = matrix[n - 1 - i][j]; 16 matrix[n - 1 - i][j] = temp; 17 } 18 } 19 } 20 };