
详细思路
顺时针翻转90度,所有格子mij->mj n-i-1,只需要在一个循环中一次性交换几个数据就可以了,
一次性交换4个数据,应该以哪些数据作为起点呢

class Solution { public: void rotate(vector<vector<int>>& matrix) { int n=matrix.size(); for(int i=0;i<(n+1)/2;i++){ for(int j=0;j<n/2;j++){ int temp=matrix[i][j]; matrix[i][j]=matrix[n-j-1][i]; matrix[n-j-1][i]=matrix[n-i-1][n-j-1]; matrix[n-i-1][n-j-1]=matrix[j][n-i-1]; matrix[j][n-i-1]=temp; } } } };
详细思路
水平翻转+主对角线翻转
class Solution { public: void rotate(vector<vector<int>>& matrix) { int n = matrix.size(); for (int i = 0; i < n / 2; ++i) { for (int j = 0; j < n; ++j) { swap(matrix[i][j], matrix[n - i - 1][j]); } } for (int i = 0; i < n; ++i) { for (int j = 0; j < i; ++j) { swap(matrix[i][j], matrix[j][i]); } } } };
浙公网安备 33010602011771号