leetcode48. Rotate Image
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int centralCircle = matrix.size() / 2 ;
for(int i=0;i<centralCircle;i++){
rotateCircle(matrix,i);
}
}
void rotateCircle(vector<vector<int>>& matrix,int circle) {
if(matrix.size()<=1) return ;
int xStart = circle;
int yStart = circle;
int xEnd = matrix.size() - 1 - circle;
int yEnd = matrix.size() - 1 - circle;
int temp = matrix[xStart][yStart];
//rotate corner
int maxIndex = xEnd - xStart;
//rotate the other
for(int y=0;y<maxIndex;y++){
temp = matrix[xStart][yStart+y];
matrix[xStart][yStart+y] = matrix[xEnd - y][yStart];
matrix[xEnd - y][yStart] = matrix[xEnd][yEnd - y];
matrix[xEnd][yEnd - y] = matrix[xStart+y][yEnd];
matrix[xStart+y][yEnd] = temp;
}
}
};