这道题只需要搞明白矩阵位置跳转逻辑即可,首选是反着赋值,只花费额外变量存储第一个值即可,然后弄清跳转过程。
class Solution { public: void rotate(vector<vector<int>>& matrix) { if(matrix.empty()&&matrix[0].empty()) { return; } int n=matrix.size(); int i; for(i=0;i<n/2;i++) { rot(matrix,i,i,n-1-i,n-1-i); } } void rot(vector<vector<int>>& matrix,int a,int b,int c,int d) { int i; for(i=0;i<d-b;i++) { int temp=matrix[a][b+i]; matrix[a][b+i]=matrix[c-i][b]; matrix[c-i][b]=matrix[c][d-i]; matrix[c][d-i]=matrix[a+i][d]; matrix[a+i][d]=temp; } } };