题目如下:
解题思路:
一层层旋转,如下图所示:
代码如下:
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
//一圈圈旋转,逐层向内
//x、y代表当前旋转所处的圈,p1、p2代表对应的旋转位置
int temp;
int x = 0;
int y = matrix.size() - 1;
while(x <= y){ //外层循环代表当前旋转的层数
int p1 = x;
int p2 = y;
while(p1 != y){
temp = matrix[x][p1]; //保存左上
matrix[x][p1] = matrix[p2][x]; //左上 = 左下
matrix[p2][x] = matrix[y][p2]; //左下 = 右下
matrix[y][p2] = matrix[p1][y]; //右下 = 右上
matrix[p1][y] = temp; //右上 = 左上
p1++;
p2--;
}
x++;
y--;
}
}
};