文章目录
题目
1、题目描述
2、原题链接
48. 旋转图像
解题报告
1、解题思路
(
1
)
(1)
(1) 顺时针旋转90°其实就是将整个数组沿着副对角线对称交换,再按行对称上下交换。
2、解题方法
枚举
2、代码详解
//副对角相折后上下翻转 (对角线)i + j == n
void rotate(int** matrix, int matrixSize, int* matrixColSize){
int i, j;
int idx;
for(i = 0; i < matrixSize; ++i){
for(j = 0; j < matrixSize; ++j){
if(i+j >= matrixSize - 1){
break;
}
idx = matrixSize - i - j - 1;
matrix[i][j] ^= matrix[i + idx][j + idx];
matrix[i + idx][j + idx] ^= matrix[i][j];
matrix[i][j] ^= matrix[i + idx][j + idx];
}
}
int mid = (matrixSize + 1) / 2;
int flag = matrixSize & 1;
for(i = 0; i < matrixSize; ++i){
if(i >= mid - flag ){
break;
}
for(j = 0; j < matrixSize; ++j){
matrix[i][j] ^= matrix[matrixSize-1-i][j];
matrix[matrixSize-1-i][j] ^= matrix[i][j];
matrix[i][j] ^= matrix[matrixSize-1-i][j];
}
}
}
总结
逆时针旋转其实就是将这个矩阵顺时针旋转270°。