比较考验脑子转不转得过来,最好先在纸上画一下图整理思路,不要和我一样上来就无脑套循环。
理解了思路还是好做的,每个小循环转一圈,大循环代表转的第几圈。小循环循环n-2i-1次,大循环循环(n+1)/2次。
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
for(int i=0;i<(matrix.size()+1)/2;i++){
for(int j=i;j<matrix[0].size()-i-1;j++){
int record=matrix[i][j];
matrix[i][j]=matrix[matrix.size()-1-j][i];
matrix[matrix.size()-1-j][i]=matrix[matrix.size()-1-i][matrix.size()-1-j];
matrix[matrix.size()-1-i][matrix.size()-1-j]=matrix[j][matrix.size()-1-i];
matrix[j][matrix.size()-1-i]=record;
}
}
}
};