LeetCode 48. 旋转图像
给定一个 n × n 的二维矩阵表示一个图像。
将图像顺时针旋转 90 度。
说明:
你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。
示例 1:
1 | 给定 matrix = |
示例 2:
1 | 给定 matrix = |
题解:
每转一个元素,就要把目的地当前的元素也转到目标位置,以此类推,一共要转4个元素。
例如,要想转动 m[i][j],那么对应的四个元素要按照 m[i][j] -> m[j][N-i-1] -> m[N-i-1][N-j-1] -> m[N-j-1][i] 的方式转动。
所以,我们只需要转矩阵的左上角的元素,让其他地方的元素跟着转。
代码:
1 | void rotate(int** matrix, int matrixSize, int* matrixColSize) |
时间复杂度 O(n2),空间复杂度 O(1)。
