思路:
按顺时针旋转分二步
1 先按副对角线交换
2 然后水平中线对称交换
代码:
void rotate(vector<vector<int> > &matrix) {
int rows=matrix.size();
if(rows==0)
return;
for(int i=0;i<rows;i++){ //副对角线交换
for(int j=0;j<rows-i;j++){
swap(matrix[i][j],matrix[rows-1-j][rows-1-i]);
}
}
for(int i=0;i<rows/2;i++){ //水平中线
for(int j=0;j<rows;j++){
swap(matrix[i][j],matrix[rows-i-1][j]);
}
}
}
如果是逆时针,则先按主对角线交换。即 j<i ,a[i][j] 和 a[j]【i】交换。