48. 旋转图像

题目链接

方法 1:原地旋转

思路

  1. 将左上角 1/4 的元素进行顺时针旋转即可。用一个 tmp 保存一下首个元素的值防止被冲掉就行。

代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        n = len(matrix)

        for i in range(n // 2):
            for j in range((n + 1) // 2):
                tmp = matrix[i][j]
                matrix[i][j] = matrix[n - j - 1][i]
                matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1]
                matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1]
                matrix[j][n - i - 1] = tmp
        return matrix

复杂度

  • 时间复杂度:$O(n^2)$。
  • 空间复杂度:$O(1)$。
使用 Hugo 构建
主题 StackJimmy 设计