旋转图像
程序员文章站
2022-07-15 12:23:40
...
题目
分析
由于要进行原地旋转,直接交换matrix[row][col]和matrix[col][matrixSize-1-row]是行不通的(演算一下)。
由于顺时针旋转90度的结果是逆时针旋转90度结果在进行中心对换的结果,所以可以先对矩阵进行转置,再对每行reverse()就可得出结果。
代码
void swap(int * a,int * b){
int tmp=*a;
*a=*b;
*b=tmp;
}
void rotate(int** matrix, int matrixSize, int* matrixColSize){
//矩阵转置
for(int row=0;row<matrixSize;row++){
for(int col=0;col<row;col++){
swap(&matrix[row][col],&matrix[col][row]);
}
}
//每行reverse
for(int row=0;row<matrixSize;row++)
for(int col=0;col<matrixSize/2;col++){
swap(&matrix[row][col],&matrix[row][matrixSize-1-col]);
}
}