1.题目描述

2.解题思路
第一步:专置整个矩阵,按行遍历,记住只需要遍历上三角。
第二部:按行遍历逆置所有行。
动手画一画,头一次写不太好想,做过一次就知道了,都是这么过来的。
3.代码
cpp
void rotate(int** matrix, int matrixSize, int* matrixColSize) {
//先按主对角线转置所有元素
int row = matrixSize;
int col = matrixColSize[0];
for(int i = 0 ;i <= row-1; i++ ){
for(int j = i+1;j<=col-1;j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
//开始对每行进行逆置
for(int k = 0;k<=row-1;k++){
int i = 0;
int j = col-1;
while(i<=j){
int temp = matrix[k][i];
matrix[k][i] = matrix[k][col-1-i];
matrix[k][col-1-i] = temp;
i++;
j--;
}
}
}