• 48. Rotate Image


     题目来源:

    https://leetcode.com/problems/rotate-image/

     自我感觉难度/真实难度:hard             写题时间时长:1h

     题意:

    旋转一个矩阵

     分析:

    我自己打算用旋转最外圈的元素来实现旋转,内圈也是。但是这样很容易出错,对圈数和行数之间的关系,很容易出错

     自己的代码:

    class Solution:
        def rotate(self, m: List[List[int]]) -> None:
            """
            Do not return anything, modify matrix in-place instead.
            """
            length=len(m)
            n_loop=length//2
            for i in range(n_loop):
                new_len=length-i*2
                for _ in range(1,new_len-1):
                    templ=m[i][i]
                    for j in range(1,new_len):
                        m[i+j-1][i]=m[i+j][i]
                    for j in range(1,new_len):
                        m[length-i-1][i+j-1]=m[length-i-1][i+j]
                    for j in range(1,new_len):
                        m[length-i-j][length-i-1]=m[length-i-j-1][length-i-1]
                    for j in range(1,new_len):
                        m[i][length-i-j]=m[i][length-i-j-1]
                    m[i][i+1]=templ
            return 

    代码效率/结果:

     优秀代码:

    class Solution:
        def rotate(self, A):
            A.reverse()
            for i in range(len(A)):
                for j in range(i):
                    A[i][j], A[j][i] = A[j][i], A[i][j]

    代码效率/结果:

     自己优化后的代码:

    class Solution:
        def rotate(self, m: List[List[int]]) -> None:
            """
            Do not return anything, modify matrix in-place instead.
            """
            length=len(m)
            n_loop=length//2
            for i in range(n_loop):
                m[i],m[length-1-i]=m[length-1-i],m[i]
            for row in range(length):
                for colum in range(row,length):
                    m[row][colum],m[colum][row]=m[colum][row],m[row][colum]  
            return 

     反思改进策略:

    1.学习了一个骚操作~

    自己的总结: 原来的数字,加一个负号,再左移一位(或关于-1/2对称)

    应用场景:在矩阵一头一尾操作时,可以使用,更加简洁

     2.解题思路很关键,挖掘解题思路

  • 相关阅读:
    mysql5.5的安装与配置(亲测版)
    CentOS 6.5升级Python和安装IPython(亲测可用)
    运维mysql基础
    linux命令巧用,随手记
    《大话设计模式》——建造者模式
    《大话设计模式》——外观模式
    《大话设计模式》——模版方法模式
    抽象类和接口的区别
    《大话设计模式》——原型模式
    《大话设计模式》——工厂方法模式
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10688360.html
Copyright © 2020-2023  润新知