• LeetCode 48. 旋转图像


    48. 旋转图像

    Difficulty: 中等

    给定一个 _n _× n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

    你必须在 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

    示例 1:

    输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
    输出:[[7,4,1],[8,5,2],[9,6,3]]
    

    示例 2:

    输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
    输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
    

    示例 3:

    输入:matrix = [[1]]
    输出:[[1]]
    

    示例 4:

    输入:matrix = [[1,2],[3,4]]
    输出:[[3,1],[4,2]]
    

    提示:

    • matrix.length == n
    • matrix[i].length == n
    • 1 <= n <= 20
    • -1000 <= matrix[i][j] <= 1000

    Solution

    如果暴力交换矩阵元素,那么会无比麻烦,正确的思路是先将矩阵上下颠倒,顶部的放到最底下,底下的放到顶上,然后再做镜像处理。比如:

    1 2 3     7 8 9     7 4 1
    4 5 6  => 4 5 6  => 8 5 2
    7 8 9     1 2 3     9 6 3
    
    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):
                matrix[i], matrix[n-1-i] = matrix[n-1-i], matrix[i]
            
            for i in range(n):
                for j in range(i+1, n):
                    matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
    
  • 相关阅读:
    HotSpot VM执行引擎的实现
    解释器与JIT编译器
    执行引擎(Execution Engine)基础知识
    堆、栈、方法区的详细图解
    方法区的垃圾回收
    方法区的演进
    方法区的内部结构
    方法区内存配置
    设计模式简记-设计原则之迪米特法则
    设计模式简记-设计原则之DRY原则
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14573967.html
Copyright © 2020-2023  润新知