思路
思路一:辅助矩阵。开辟一个矩阵用来接收遍历时旋转的结果。
思路二:原地旋转。因为旋转的时候无非就是四个方向的交替旋转,因此用一个temp来保存i行j列的元素,等其他三个位置都旋转完覆盖到对应的位置时便可以对最后一个元素赋temp。要注意的是旋转过程中并不是遍历所有行列,行列为偶数时只需要遍历行列元素的一半,当行列为奇数时则按照图中这样进行划分,行列也可以交换。
代码
//原地旋转
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int len=matrix.size();
int temp;
for(int i=0;i<len/2;++i){
for(int j=0;j<(len+1)/2;++j){
temp=matrix[i][j];
matrix[i][j]=matrix[len-j-1][i];
matrix[len-j-1][i]=matrix[len-i-1][len-j-1];
matrix[len-i-1][len-j-1]=matrix[j][len-i-1];
matrix[j][len-i-1]=temp;
}
}
}
};