48. 旋转图像

Problem: 48. 旋转图像

思路

思路一

用辅助数组的方式很好做
原矩阵的matrix[i][j] 对应于 反转后的 matrix[j][n - i - 1]
物理意义:对于矩阵中第 i 行的第 j 个元素,在旋转后,它出现在倒数第 i 列的第 j 个位置

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        # 借助于辅助矩阵

        n = len(matrix)

        tem = copy.deepcopy(matrix) # 深拷贝

        for i in range(n):
            for j in range(n):
                matrix[j][n-i-1] = tem[i][j]
 

思路二

如果需要原地修改则需要观察,借用K神图片

image.png

可以发现A被覆盖掉了,所以可以用临时变量temp存储

原矩阵中的matrix[i][j]对应旋转后的matrix[j][n-1-i]
原矩阵中的matrix[j][n-1-i]对应旋转后的matrix[n-1-i][n-1-j]
原矩阵中的matrix[n-1-i][n-1-j]对应旋转后的matri[n-1-j][i]
原矩阵中的matri[n-1-j][i]对应旋转后的matrix[i][j]

image.png

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        n = len(matrix)

        for i in range(n // 2):
            for j in range((n + 1) // 2):
                tem = 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] = tem

思路三

通过观察可以得出:原矩阵可以通过一次「水平翻转」+「主对角线翻转」得到旋转后的二维矩阵。

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
    
        # 顺时针旋转90° = 水平翻转 + 沿主对角线反转
        # 水平翻转
        n = len(matrix)
        for i in range(n // 2):
            matrix[i], matrix[n - 1 - i] = matrix[n - 1 - i], matrix[i]
        
        # 沿主对角线反转
        for i in range(n):
            for j in range(i):
                matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

解题方法

模拟

复杂度

时间复杂度: O ( n 2 ) O(n^2) O(n2) 两重循环

空间复杂度: O ( 1 ) O(1) O(1) 一个临时变量

相关推荐

  1. leetcode48. 旋转图像

    2024-04-05 22:58:01       16 阅读
  2. leetcode48 旋转图像

    2024-04-05 22:58:01       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-05 22:58:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-05 22:58:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-05 22:58:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-05 22:58:01       18 阅读

热门阅读

  1. opencv-python库 cv2图像二值化详解

    2024-04-05 22:58:01       14 阅读
  2. 基于SpringBoot注入Bean形式的监听(端口)

    2024-04-05 22:58:01       11 阅读
  3. 【洛谷题解】 P1696 [USACO18JAN] Blocked Billboard II B

    2024-04-05 22:58:01       13 阅读
  4. ACWing: 1049 大盗阿福

    2024-04-05 22:58:01       14 阅读
  5. 【CANoe】CAPL_E2E测试-验证报文中的CRC值是否正确

    2024-04-05 22:58:01       14 阅读
  6. 系统交互造成的乱码问题

    2024-04-05 22:58:01       15 阅读
  7. gulp的基本使用(三)

    2024-04-05 22:58:01       17 阅读
  8. mysql 通配符与模式匹配用法详解

    2024-04-05 22:58:01       13 阅读
  9. C++初阶:vector类的模拟实现(含模板)

    2024-04-05 22:58:01       14 阅读