p139 旋转图像(leetcode 48)
一:解题思路
先按照主对角线进行反转,然后列对称进行反转。
如果这个题目改为,将图像逆时针旋转90度。那么解题方法与上面类似,先按主对角线进行反转,然后按照行对称进行反转。
Time:O(n^2),Space:O(1)
二:完整代码示例 (C++版和Java版)
C++:
class Solution { public: void rotate(vector<vector<int>>& matrix) { if (matrix.size() == 0 || matrix[0].size() == 0) return; int n = matrix.size(); for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = temp; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n / 2; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[i][n-1-j]; matrix[i][n - 1 - j] = temp; } } } };
Java:
class Solution { public void rotate(int[][] matrix) { if(matrix==null || matrix.length==0 || matrix[0]==null || matrix[0].length==0) return; int n=matrix.length; for(int i=0;i<n;i++) { for(int j=i;j<n;j++) { int temp=matrix[i][j]; matrix[i][j]=matrix[j][i]; matrix[j][i]=temp; } } for(int i=0;i<n;i++) { for(int j=0;j<n/2;j++) { int temp=matrix[i][j]; matrix[i][j]=matrix[i][n-j-1]; matrix[i][n-j-1]=temp; } } } }

浙公网安备 33010602011771号