看了大神的这类翻转问题通用解法,
解这类问题就变得非常简单了。
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
reverse(matrix.begin(),matrix.end());
for(int i = 0;i < matrix.size();i++)
{
for(int j = i + 1;j < matrix[i].size();j++)
{
swap(matrix[i][j],matrix[j][i]);
}
}
}
};
其实最开始我想通过不断swap,但脑力不够,直到看到大神的解法:
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
int a = 0;
int b = n-1;
while(a<b){
for(int i=0;i<(b-a);++i){
swap(matrix[a][a+i], matrix[a+i][b]);
swap(matrix[a][a+i], matrix[b][b-i]);
swap(matrix[a][a+i], matrix[b-i][a]);
}
++a;
--b;
}
}
};